ajax循环settimeout,仅在先前请求完成后才有新请求

时间:2018-09-01 11:23:19

标签: javascript jquery ajax settimeout

am尝试多次调用ajax函数以从我的聊天表中获取数据,并且仅在该表中有新消息时才将数据追加到div中。 我的代码

(function CallThat() {
    $.ajax({
      url:'intervalog.php',
      method:'POST',
      data:{datime:mylmsgt},
      success:function(data){
      if(data!=5){
      $('#intrmylmsgt').load('intrmylmsgt.php');
      $('#chatlogs').append(data);
      }
      }
        });
setTimeout(CallThat, 1000);
}());   

这只能在10-15秒内完美运行,然后开始在控制台(jquery.min.js)中连续显示这些错误

  POST http://******/intervalog.php 0 ()

该页面卡住后,我必须关闭该页面。 我认为问题是继续ajax请求而不完成先前的请求,有什么解决办法吗?

1 个答案:

答案 0 :(得分:1)

您应该使用async:false使ajax同步工作

(function CallThat() {
    $.ajax({
      url:'intervalog.php',
      method:'POST',
      data:{datime:mylmsgt},
      success:function(data){
          if(data!=5){
            $('#intrmylmsgt').load('intrmylmsgt.php');
            $('#chatlogs').append(data);
            CallThat()
          }
      }
   });
}());

并检查CallThat()函数是否为空,空响应。如果响应为空或为null,则下次不要调用CallThat()。