我有一个对象,我将其存储在 cookie 中,然后获取该对象并将其用于一些检查,这很好,但我遇到的问题都与该行有关
if(!arr.hasOwnProperty($(this).val())){
在
$(".not").click(function() {
//alert($(this).val()+JSON.stringify(arr));
if(!arr.hasOwnProperty($(this).val())){
$.getJSON("<?php echo BASE_URL;?>json/startup/not", {id: $(this).val()}, function(json){
if(json.status == "OK"){
arr[json.data.id] = json.data.id;
arr = JSON.stringify(arr);
$.cookie('votedId', arr);
$('#percent'+json.data.id).html(json.data.percent);
$('#votes'+json.data.id).html(json.data.votes);
}
});
}else{
alert("Already voted on this startup!");
}
//alert($(this).val());
});
发生的情况是,我第一次这样做时,它意识到传入的值没有任何属性,并让投票发生。然后它不让它投票,因为它应该。
然而,问题在于他们可以投票的页面上的其他元素,然后在第一个元素被投票后说传入的 id 有一个属性,即使它不存在。如果我刷新页面,它可以让我投票。
只是因为我觉得上面的解释有点难以理解,让我举个例子。
我有多个投票热或不投票的事情。第一个的 id 是 1,第二个是 2,依此类推。我投票认为 1 是热的,因此 cookie 和 arr 数组被更新为具有属性 1,因此无法再次对其进行投票。然而,在那之后,所有其他的事情都说他们也被投票过,即使他们还没有投票过。所以现在我不能对 2 投票。但如果我刷新页面就可以了。但是,如果我想对元素 3 进行投票,我必须刷新页面。
有任何想法吗?