我的代码有问题。这是一个产品页面,如果我单击“保存”按钮,它会将产品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 );
});
答案 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)
})