【发布时间】:2012-12-26 12:53:50
【问题描述】:
我有这个间隔,它执行一个 ajax 请求,目前每 5 秒一次。我对if 语句有疑问。我的代码总是输入它,两个 json 值完全相同,为什么会看到它们不同?
var newActivity = null, oldActivity = null;
setInterval(function(){
$.ajax({
type: "get",
url: "/get/new_activity",
dataType: "json",
success: function(data){
oldActivity = newActivity;
newActivity = data;
console.log(JSON.stringify(oldActivity));
console.log(JSON.stringify(newActivity));
if(JSON.stringify(oldActivity) != JSON.stringify(newActivity)){
$("#new-activity").slideDown( "fast" );
}
}
});
}, 5000);
编辑
这是控制台输出(虚线是分隔请求,它不在实际输出中)
null
[{"title":"How many planets are in the solar system?","title_url":"How-many-planets-are-in-the-solar-system%3F","id":"2","answers":"1","asked":"2013-01-11 10:03:50","asked_pretty":"Today","activity":"2013-01-11 12:33:53","activity_pretty":"Today"},{"title":"Why is the sky blue?","title_url":"Why-is-the-sky-blue%3F","id":"1","answers":"1","asked":"2013-01-11 09:55:13","asked_pretty":"Today","activity":"2013-01-11 12:03:45","activity_pretty":"Today"}]
---------------------------------------------------
[{"title":"How many planets are in the solar system?","title_url":"How-many-planets-are-in-the-solar-system%3F","id":"2","answers":"1","asked":"2013-01-11 10:03:50","asked_pretty":"Today","activity":"2013-01-11 12:33:53","activity_pretty":"Today"},{"title":"Why is the sky blue?","title_url":"Why-is-the-sky-blue%3F","id":"1","answers":"1","asked":"2013-01-11 09:55:13","asked_pretty":"Today","activity":"2013-01-11 12:03:45","activity_pretty":"Today"}]
[{"title":"How many planets are in the solar system?","title_url":"How-many-planets-are-in-the-solar-system%3F","id":"2","answers":"1","asked":"2013-01-11 10:03:50","asked_pretty":"Today","activity":"2013-01-11 12:33:53","activity_pretty":"Today"},{"title":"Why is the sky blue?","title_url":"Why-is-the-sky-blue%3F","id":"1","answers":"1","asked":"2013-01-11 09:55:13","asked_pretty":"Today","activity":"2013-01-11 12:03:45","activity_pretty":"Today"}]
---------------------------------------------------
[{"title":"How many planets are in the solar system?","title_url":"How-many-planets-are-in-the-solar-system%3F","id":"2","answers":"1","asked":"2013-01-11 10:03:50","asked_pretty":"Today","activity":"2013-01-11 12:33:53","activity_pretty":"Today"},{"title":"Why is the sky blue?","title_url":"Why-is-the-sky-blue%3F","id":"1","answers":"1","asked":"2013-01-11 09:55:13","asked_pretty":"Today","activity":"2013-01-11 12:03:45","activity_pretty":"Today"}]
[{"title":"How many planets are in the solar system?","title_url":"How-many-planets-are-in-the-solar-system%3F","id":"2","answers":"1","asked":"2013-01-11 10:03:50","asked_pretty":"Today","activity":"2013-01-11 12:33:53","activity_pretty":"Today"},{"title":"Why is the sky blue?","title_url":"Why-is-the-sky-blue%3F","id":"1","answers":"1","asked":"2013-01-11 09:55:13","asked_pretty":"Today","activity":"2013-01-11 12:03:45","activity_pretty":"Today"}]
【问题讨论】:
-
请发布由
newActivity和oldActivity的JSON 字符串化产生的实际值。如果它们包含 对象,则 不保证 JSON 形式的排序或相等性。 (它们是等价但不相同的其他编码;它们不太常见。) -
@Christophe 除了它完全不正确,在第一个输出列表中给出。
-
@Christophe pst 是正确的,我删除了我的答案,因为它是错误的。
-
@Christophe:事实上他的代码说它们是不同的。
-
我是个白痴。我在另一个函数中将
newActivity重置为null。这就是为什么他们每次回来都是不平等的。
标签: javascript jquery json