2010-10-19 78 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);}); 

這將使你的服務器的能力,試圖發送到每一個用戶,併發送回一個消息對他們來說,失敗的消息,而不僅僅是第一的所有用戶。