現在、Webアプリケーションを作成しています。
「jquery.cookie.js」というライブラリを使用して、
クッキーの読み書きをしています。
$.setCookie()でCookieをセットする場合、
━━━━━━━━━━━━━━━━━━
$.setCookie("test1","example1");
$.setCookie("test2","example2");
$.setCookie("test3","example3");
location.href = "example.html";
━━━━━━━━━━━━━━━━━━
のように処理させると、
Cookieの値が正常にセットされません。
どうやらlocation.hrefをコメントアウトすると、
正常にCookieがセットされるようです。
Cookieの書き込みが処理される前に、
location.hrefが実行されるからかと思い、
「jdeferred」を使ってみましたが、
どうもうまくいく場合とうまくいかない場合があるようです。
━━━━━━━━━━━━━━━━━━
setCookie( "test1", "example1" ).then(function(){
setCookie( "test2", "example2" ).then(function(){
setCookie( "test3", "example3" ).then(function(){
location.href = "example.html"; }, function(e){ }) }, function(e){ })
}, function(e){ });
function setCookie( key, value ){
var d = new $.Deferred;
$.cookie( key, value, { expires: 365 });
d.resolve(); return d.promise();
}
━━━━━━━━━━━━━━━━━━
ちなみに無理やり3秒待機させてから
location.hrefを実行すると正常に動作していました。
━━━━━━━━━━━━━━━━━━
$.setCookie("test1","example1");
$.setCookie("test2","example2");
$.setCookie("test3","example3");
$(function(){
setTimeout(function(){
location.href = "example.html";
},3000);
});
━━━━━━━━━━━━━━━━━━
原因がよくつかめていないです。
無理やり3秒待機させてからページ遷移というのは、
よいやり方ではないですよね?
(現場でこういう無理やりな処理書いたりするんでしょうか)
原因と対策がわかる方おりましたら、
アドバイスしていただけますと幸いです。
よろしくお願いいたします。
追伸:
どうも3秒待機でもうまくいくわけではないようです。
何度か試しましたが、ダメでした。
追記:
修正依頼でいただいたsetCookieメソッドを記載します。
var Cookie = (function() {
var Cookie = function() { }; var p = Cookie.prototype; p.setCookie = function( key, val ){ $.cookie( key, val, { expires: 365 }); //有効期限1年間 }; p.getCookie = function( key ){ return $.cookie( key ); }; return Cookie;
})();
回答1件
あなたの回答
tips
プレビュー