2010-10-19 95 views
0
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循环向不同的用户发送相同的消息。Jquery for loop doesnt stop

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

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

回答

0

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

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

+0

确定它帮助,但只有正常警报。与jAlerts有s – Mstrfgsk 2010-10-19 20:11:31

+0

...同样的问题 – Mstrfgsk 2010-10-19 20:12:30

0

就像第一遍,这是非常低效的。将响应对象与消息,主题和用户列表打包在一起并让服务器执行拆包不是更好吗?它会将客户端的带宽和延迟从O(n)降低到O(1)!喜欢的东西:

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

这将使你的服务器的能力,试图发送到每一个用户,并发送回一个消息对他们来说,失败的消息,而不仅仅是第一的所有用户。