2012-10-06 73 views
2

我要檢查如果cookie存在與否Cookie始終爲空?

問題是,它總是返回NULL,如果我檢查

if ($.cookie('cookieCreditDash') == null) { 

    //CODE ALWAYS ENTER HERE... :(
      alert("no cookie");  
      $.getJSON(url, function(data) { 
       saveCreditCookie(data); 
      }); 
} else{ 
      alert("with cookie"); 
      var data = JSON.parse($.cookie("cookieCreditDash")); 
} 

function saveCreditCookie(jsonData){ 
    var date = new Date(); 
    date.setTime(date.getTime() + (30 * 60 * 1000)); 
    $.cookie("cookieCreditDash", JSON.stringify(jsonData), {expires: date}); 
} 

WHYYY> ??

順便說一句,我用下面的插件:

(function ($, document, undefined) { 
     var pluses = /\+/g; 
     function raw(s) { 
      return s; 
     } 
     function decoded(s) { 
      return decodeURIComponent(s.replace(pluses, ' ')); 
     } 
     var config = $.cookie = function (key, value, options) { 
      // write 
      if (value !== undefined) { 
       options = $.extend({}, config.defaults, options); 
       if (value === null) { 
        options.expires = -1; 
       } 
       if (typeof options.expires === 'number') { 
        var days = options.expires, t = options.expires = new Date(); 
        t.setDate(t.getDate() + days); 
       } 
       value = config.json ? JSON.stringify(value) : String(value); 
       return (document.cookie = [ 
        encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), 
        options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 
        options.path ? '; path=' + options.path : '', 
        options.domain ? '; domain=' + options.domain : '', 
        options.secure ? '; secure' : '' 
       ].join('')); 
      } 

      // read 
      var decode = config.raw ? raw : decoded; 
      var cookies = document.cookie.split('; '); 
      for (var i = 0, parts; (parts = cookies[i] && cookies[i].split('=')); i++) { 
       if (decode(parts.shift()) === key) { 
        var cookie = decode(parts.join('=')); 
        return config.json ? JSON.parse(cookie) : cookie; 
       } 
      } 
      return null; 
     }; 
     config.defaults = {}; 
     $.removeCookie = function (key, options) { 
      if ($.cookie(key) !== null) { 
       $.cookie(key, null, options); 
       return true; 
      } 
      return false; 
     }; 
    })(jQuery, document); 
+1

看看'saveCreditCookie'中產生的alert(JSON.stringify(jsonData))會有趣。如果出於某種原因,結果是'null',那麼這可以解釋它。 –

+0

你是對的.. jsonData爲空,這就是爲什麼cookie爲空。謝謝 – newbie

回答

1

,我可以從文檔jquery.cookie.js看到:expires是天

if ($.cookie('cookieCreditDash') == null) 
{ 
    $('div').text("no cookie"); 
    $.cookie("cookieCreditDash", 'test', {expires: 1}); 
} else{ 
    var data = $.cookie("cookieCreditDash"); 
    $('div').text("with cookie: " + data);   
} 

http://jsfiddle.net/HeGhf/

+0

json示例:http://jsfiddle.net/sge92/ – webdeveloper

1

看起來你正在使用jQuery cookie plugin的數量。

除了cookie過期問題,您可能還想檢查您的cookie路徑,使其可用於您域中的所有路徑。您可以通過編寫下面的代碼這樣做,

$.cookie("cookieCreditDash", "Value", { path: '/' }); 

沒有{path: '/'},Cookie路徑將被限制爲僅電流通路的水平。