Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果连接不好或数据库连接太多,Ajax会得到重复_Javascript_Jquery - Fatal编程技术网

Javascript 如果连接不好或数据库连接太多,Ajax会得到重复

Javascript 如果连接不好或数据库连接太多,Ajax会得到重复,javascript,jquery,Javascript,Jquery,我有这段代码从宿主获取jSon数据,但有时在连接不稳定时会重复或更多 //Interval to run getChat() every 2 seconds setInterval(function(){getChat();}, 2000); //Get Messages from Database function getChat() { $.ajax({ type: "GET", url: "myhosting.net/myscript.php" }).done( f

我有这段代码从宿主获取jSon数据,但有时在连接不稳定时会重复或更多

//Interval to run getChat() every 2 seconds
setInterval(function(){getChat();}, 2000);
//Get Messages from Database
function getChat() {
  $.ajax({
    type: "GET",
    url: "myhosting.net/myscript.php"
  }).done( function( data )
  {
    var jsonData = JSON.parse(data);
    var jsonLength = jsonData.results.length;
    var html_ = "";
    for (var i = 0; i < jsonLength; i++) {
      var result = jsonData.results[i];

      var chatmsg = $("<div></div>").text(result.chattext).html();
      html_ += '<span class="color-'+result.color+'"><b>'+result.usrname+'</b></span> <i class="fa fa-angle-right"></i> '+chatmsg+'<br>';     
    }

    $('#page-chat').append(html_);
  });

}
//每2秒运行getChat()的时间间隔
setInterval(函数(){getChat();},2000);
//从数据库获取消息
函数getChat(){
$.ajax({
键入:“获取”,
url:“myhosting.net/myscript.php”
}).完成(功能(数据)
{
var jsonData=JSON.parse(数据);
var jsonLength=jsonData.results.length;
var html_uquo;;
对于(var i=0;i';
}
$(“#页面聊天”).append(html);
});
}
我还有一个表单,当我用另一个函数发送消息时,我再次调用getChat()刷新我的#页面聊天内容div


datbase的POST工作正常,我没有重复,这只是我的代码的客户端问题,我正在考虑设置一个CheckState=1变量来检查ajax GET调用是否成功,如果没有,CheckState=0…这样它就不会再次运行相同的函数,您认为如何?注:当互联网速度较慢或有很多人同时聊天时,就会发生这种情况……这是一款移动聊天应用程序

处理重复消息的简单方法是为每条消息创建一个按时间顺序排列的ID。通过这种方式,即使某些信息晚到(由于许多与网络相关的事情可能会发生),您仍然可以对消息进行排序


在每封邮件到达post邮件服务器或离开客户端时,为其生成时间戳。

处理邮件重复的一种简单方法是为每封邮件创建一个按时间顺序排列的ID。通过这种方式,即使某些信息晚到(由于许多与网络相关的事情可能会发生),您仍然可以对消息进行排序


当每条消息在post消息上到达服务器或离开客户端时,为其生成时间戳。

您是否可以将代码发布到一个表单中,该表单也调用
getChat()
?这就是为什么用于检索同步真实世界事件的异步方法不是最佳匹配的原因。使用有序的东西,比如WebSockets,不仅可以避免匆忙的错误订单,而且可以平稳运行,避免甚至可能备份的网络轮询。如果您不能使用EventSource或WebSockets,至少要等到之前的ajax请求完成后再发送另一个请求。您可以将代码发布到您有一个表单的地方,该表单也调用
getChat()
?这就是为什么检索同步真实世界事件的异步方法不是最佳匹配。使用有序的东西,比如WebSockets,不仅可以避免匆忙的错误订单,而且可以平稳运行,避免甚至可能备份的网络轮询。如果您不能使用EventSource或WebSockets,至少要等到前面的ajax请求完成后再发送另一个请求。