检查jquery cookie中是否存在该ID

时间:2017-01-03 12:03:36

标签: javascript jquery cookies

我的代码有问题。这是一个产品页面,如果我单击“保存”按钮,它会将产品ID保存到jquery cookie中。在cookie中,我存储ID-s就像这个例子:1,2,3,4 ....

如果一个ID已经在cookie中,我不会收到该错误,它总是再次保存它,而不是ID将在cookie中重复。

$('#favorite_button').click(function()
    {
         var cookie_message, item_id, most_van;
         item_id = <?php echo $kat_id  ?>;
         var cookie_val = $.cookie("kedvenc_termek_cookie");
         if(cookie_val){
             most_van = cookie_val.split(",");
         }
         else{
             most_van = [];
         }
         if($.inArray(item_id, most_van) === -1){
             most_van.push(item_id);
             $.removeCookie('kedvenc_termek_cookie');
             $.cookie('kedvenc_termek_cookie', most_van.join(","), { expires: 7, path: "/" });
             cookie_message = "ID saved okey.";
         }
         else {
             cookie_message = "This ID already in the cookie.";
         }
         $('#FavoritItemModalResult').html(cookie_message);$('#FavoritItemModal').modal('show');
         setTimeout(function()
         {
            $('#FavoritItemModal').modal('hide');
         }, 3000 );
     });

1 个答案:

答案 0 :(得分:0)

$ .inArray与Array.prototype.indexOf类似,它严格比较(===)。

当你执行most_van = cookie_val.split(&#34;,&#34;);时,会得到一个字符串数组。 确保你有相同的类型。

如果item_id是一个int,那么你可以这样做:

most_van = cookie_val.split(",");
most_van = most_van.map(function(id) {
  return parseInt(id, 10)
})