Ajax调用x秒和更新表

时间:2017-01-14 18:49:41

标签: jquery ajax setinterval

我想让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);
});

1 个答案:

答案 0 :(得分:1)

在功能中包装功能:

var tryCall = function () {
    // your AJAX call here, with its callback and all
};

并将该功能设置为每5秒执行一次:

setInterval(tryCall, 5000);

目前,您尝试仅调用$.ajax()的一次调用结果,并且每隔1秒尝试一次。