【发布时间】:2012-04-28 15:45:56
【问题描述】:
我正在尝试构建一个从服务器获取数据并将其显示给用户的 web 应用程序。脚本每 10 秒从服务器获取一次数据,如果数据发生变化,它会提醒用户。这是我现在使用的代码,但它每 10 秒提醒一次数据是否已更改。
那么我需要如何更改我的 scipt 以使其比较旧 JSON 和新 JSON 并查看它们是否不同,以及在更新显示给用户的数据之前它们是否显示警报?
$('#ListPage').bind('pageinit', function(event) {
getList1();
});
setInterval ( "getList1()", 10000 );
var old = "";
function getEmployeeList1() {
$.getJSON(serviceURL + 'getemployees.php?' + formArray, function(data) {
if(data != old){ // data from the server is not same as old
$('#nollalista li').remove();
keikka = data.key;
$.each(keikka, function(index, lista) {
$('#nollalista').append('<li><a href="employeedetails.html?id=' + lista.IND + '">' +
'<h4>' + lista.OSO + '</h4>' +
'<p>' + lista.AIKA + '</p>' +'</a></li>');
});
$('#nollalista').listview('refresh');
if(old != "")
alert("New data!");
old = data;
}
});
}
【问题讨论】:
-
如何确定两个 javascript 对象的相等性:stackoverflow.com/questions/201183/…
-
从不将字符串传递给
setInterval()或setTimeout()。这样做与使用eval()一样糟糕,一旦使用变量,它就会导致代码不可读且可能不安全,因为您需要将它们插入字符串而不是传递实际变量。正确的解决方案是setInterval(function() { /* your code *) }, msecs);。这同样适用于setTimeout()。如果只想调用单个函数不带任何参数,也可以直接传函数名:setInterval(someFunction, msecs);(注意函数名后面有no())
标签: javascript jquery json compare