【发布时间】:2012-10-14 04:56:28
【问题描述】:
我有一个对象,我将它存储在一个 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 进行投票,我必须刷新页面。
有什么想法吗?
【问题讨论】:
-
它是一个 JSON 对象,它只跟踪已投票的单个事物的 id。
标签: javascript jquery object properties comparison