2014-01-07 5 views
0

Я хочу, чтобы эта работа работала, но я не знаю, как это сделать.jQuery Cookie Plugin reading Значение

Я хочу показать баннер, если установлен файл cookie, и значение файла cookie соответствует.

На самом деле я могу читать cookie, но не значение. Если cookie существует, появляется баннер - это делается. Но баннер должен появиться, если файл cookie существует, и значение соответствует.

Это информация печенье:

Это один должен совпадать с Показать баннер:

Имя: MyCookie Значение:% 3A2% 3A% 7Б% 3A17% 3A% 22bmbankloginBankId% 22% 3BS % 3A1% 3A% 221% 22% 3Bs% 3A27% 3A% 22bmbankloginDisclaimerSigned% 22% 3Bb% 3A1% 3B% 7D Хост: www.mydomain.de Путь:/ Истекает: ср, 30 дек 2043 23:26: 25 GMT

Тот же файл cookie с другим значением, который не должен отображать баннер в конце:

Имя: MyCookie Значение:% 3A2% 3A% 7Б% 3A17% 3A% 22bmbankloginBankId% 22% 3BS% 3A2% 3A% 2229% 22% 3BS% 3A27% 3A% 22bmbankloginDisclaimerSigned% 22% 3BB% 3A1% 3B% 7D Ведущий: www.mydomain.de Путь:/ Expires: Thu, 31 Dec 2043 08:57:36 GMT

Это мой сценарий:

Via CSS является #partner для отображения: нет.

JQuery плагин содержит следующее:

/*! 
* jQuery Cookie Plugin v1.3.1 
* https://github.com/carhartl/jquery-cookie 
* 
* Copyright 2013 Klaus Hartl 
* Released under the MIT license 
*/ 
(function (factory) { 
    if (typeof define === 'function' && define.amd) { 
     // AMD. Register as anonymous module. 
     define(['jquery'], factory); 
    } else { 
     // Browser globals. 
     factory(jQuery); 
    } 
}(function ($) { 

    var pluses = /\+/g; 

    function decode(s) { 
     if (config.raw) { 
      return s; 
     } 
     return decodeURIComponent(s.replace(pluses, ' ')); 
    } 

    function decodeAndParse(s) { 
     if (s.indexOf('"') === 0) { 
      // This is a quoted cookie as according to RFC2068, unescape... 
      s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 
     } 

     s = decode(s); 

     try { 
      return config.json ? JSON.parse(s) : s; 
     } catch(e) {} 
    } 

    var config = $.cookie = function (key, value, options) { 

     // Write 
     if (value !== undefined) { 
      options = $.extend({}, config.defaults, options); 

      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 = [ 
       config.raw ? key : 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 cookies = document.cookie.split('; '); 
     var result = key ? undefined : {}; 
     for (var i = 0, l = cookies.length; i < l; i++) { 
      var parts = cookies[i].split('='); 
      var name = decode(parts.shift()); 
      var cookie = parts.join('='); 

      if (key && key === name) { 
       result = decodeAndParse(cookie); 
       break; 
      } 

      if (!key) { 
       result[name] = decodeAndParse(cookie); 
      } 
     } 

     return result; 
    }; 

    config.defaults = {}; 

    $.removeCookie = function (key, options) { 
     if ($.cookie(key) !== undefined) { 
      // Must not alter options, thus extending a fresh object... 
      $.cookie(key, '', $.extend({}, options, { expires: -1 })); 
      return true; 
     } 
     return false; 
    }; 

})); 

Так что я должен делать ??

ответ

1

При загрузке страницы в первый раз (или когда) установите печенье:

$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' }); 

На последующих нагрузках захватить это значение (это будет не определен, если не установлен):

var cookieValue = $.cookie('the_cookie'); 

Затем решить, что делать:

var requiredValue = "whatever"; 
if(cookieValue === requiredValue){ 
    $('#partner').show(); 
} 

EDIT:

Что-то вроде этого: $ .cookie.json = true;

var cookieValue = { 
    value1: "string", 
    value2: integer, 
    value3: {object} 
} 

$.cookie('my_cookie', cookieValue, { expires: 7, path: '/' }); 

var cookieValue = $.cookie('the_cookie'), 
    requiredValue = "whatever"; 

if(cookieValue[key] === requiredValue){ 
    $('#partner').show(); 
} 
+0

Отлично, это работает! Thanx! Но значение cookie - это своего рода массив (я думаю), и только один параметр является индикатором, который я ищу. Это массив: «a: 2: {s: 17:« bmbankloginBankId »; s: 1:« 1 »; s: 27:« bmbankloginDisclaimerSigned »; b: 1;}« Я ищу только », bmbankloginBankId "; s: 1:" 1 ";". Что мне делать? Большое спасибо!!!! – user3169074

+0

Значение файла cookie - это строка (если вы не указали '$ .cookie.json = true'). Если вам нужно сохранить всю указанную вами информацию, вставьте ее в объект, сохраните ее как таковой и ссылайтесь соответственно после ее получения. –

+0

Thanx, но я не знаю, как это сделать.Не могли бы вы дать мне еще один намек, пожалуйста? – user3169074

Смежные вопросы