我想让AJAX Get call执行5秒并检查内容的长度。如果长度已更改,则应使用新项更新表,如果不保留旧记录。我现在遇到的问题是,该表确实更新了,但它重新添加了之前使用新项目的所有项目。如何解决此问题,以便只将新项添加到表中已存在的项?
$(function(){
var orderTable = ("#orderTable");
var lastResponse = 0;
var sTemplate;
var tableTemplate = '<tr>\
<th>{{Name}}</th>\
<th>{{Order}}</th>\
<th>{{Price}}</th>\
</tr>'
setInterval(function() {
$.ajax({
type: 'GET',
cache: false,
url: "http://localhost:51834/CoffeeService.svc/getallorders/",
success: function(orders){
console.log(orders);
if(lastResponse.toString().length === orders.toString().length)
{
console.log("LR" + lastResponse.toString().length);
console.log("same stuff");
} else {
console.log("new stuff");
lastResponse = orders;
console.log("LR" + lastResponse.toString().length);
$.each(orders, function(i, order){
var sTemplate = tableTemplate;
sTemplate = sTemplate.replace("{{Name}}", order.Name);
sTemplate = sTemplate.replace("{{Order}}", order.Order);
sTemplate = sTemplate.replace("{{Price}}", order.Price + " -kr;");
$("#orderTable").append(sTemplate);
});
}
}
});
}, 1000);
});
答案 0 :(得分:1)
在功能中包装功能:
var tryCall = function () {
// your AJAX call here, with its callback and all
};
并将该功能设置为每5秒执行一次:
setInterval(tryCall, 5000);
目前,您尝试仅调用$.ajax()
的一次调用结果,并且每隔1秒尝试一次。