在同一页面上多次调用ajax

时间:2009-05-04 10:30:12

标签: jquery ajax

我正在尝试使用jQuery创建一个聊天应用程序,而不必使用setTimeout来缩小ajax请求的数量:

function checkChat(){    
  new jQuery.ajax({
        'url'     : './chat/check.php',
        'cache'   : false,
        'success' : function(messages) {
                      if( messages.length ) {
                          $("#empty_chat").append(messages);
                          //write to chat wall
                       }
                       checkChat();
                   }
   });
}

在一个工作得很好但在页面上有其他ajax事件(如导航)的简单页面上,请求排队,只要消息为空,就不会出现任何内容。

光标也处于等待状态。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

不是真的,除非您想查看Comet,否则您仍然需要轮询消息并且setTimeout很好。

你在checkChat()递归调用时设置的递归应该设置为setTimeout,否则你将堆栈溢出lol

setTimeout(checkChat,2000);

并且需要删除新运算符并执行

jQuery.ajax或$ .ajax

Comet and jQuery

答案 1 :(得分:-2)

排队的AJAX请求的影响很可能是由于对相同域的活动请求的限制,在大多数浏览器上默认为2。