循环的Jquery不会停止

时间:2010-10-19 18:34:09

标签: jquery post for-loop

   for (var i=0;i<ToArray.length;i++) {
    $.post('jquery/messages.php',{To:ToArray[i],subject:subject,msg:msg},function(data){jAlert(data);}); 
  } 

用户可以向其他用户发送短消息。名称是commaseparetad,在我拆分字符串之后,我希望使用for循环向不同的用户发送相同的消息。

如果出现问题(例如,数据库中没有此类用户),服务器会提醒用户并停止该过程。如果用户按下“确定”按钮,则该过程继续。

我的问题是循环永远不会停止,它只会警告最后一个错误的名称。

2 个答案:

答案 0 :(得分:0)

这可能是因为$ .post的默认模式是异步运行,因此循环运行到最后,帖子由浏览器排队。当最终发生错误时,循环结束并且最后一条记录就位。

尝试更改为使用$ .ajax并将async设置为false。

答案 1 :(得分:0)

就像第一次通过一样,这非常低效。将响应对象与消息,主题和用户列表打包在一起并让服务器进行解压缩不是更好吗?它会减少客户端的带宽和延迟,从O(n)到O(1)!类似的东西:

$.post('jquery/messages.php',{To:ToArray,subject:subject,msg:msg},function(data){jAlert(data);});

这将使您的服务器能够尝试发送给每个用户,并为消息失败的所有用户发回消息,而不仅仅是第一个消息。