2012-07-27 33 views
0

與後做一個對循環閱讀下面的代碼:如何在jQuery的

for (i = 0; i < 20; i++) { 
    $.post('url', 'data='+ i, function (data) 
    { 
     alert('Element ' + i + ' was added'); 
    }; 
} 

如果你這樣做20 POST將在同一時間進行!

我需要的是一個一個地做(順序)...我該怎麼做?

+0

第一週期i = 0 POST接收的數據顯示警報(...),第二週期i = 1個POST接收數據顯示警報(...),...等 – 2012-07-27 03:38:26

+0

這是一個重複的問題: http://stackoverflow.com/questions/5821380/how-to-make-a-jquery-post-request-synchronous – 2012-07-27 03:39:13

+0

@MikeCorcoran - 不確定OP想讓代碼同步。他希望AJAX按順序運行,但頁面上的其他代碼不必等待AJAX​​返回。 – 2012-07-27 03:40:26

回答

2

在回調中,只需再次調用該函數即可。

function sendRequest(i) { 
    $.post('url', 'data=' + i, function(data) { 
     alert('Element ' + i + ' was added'); 

     if(i < 19) { 
      sendRequest(i + 1); 
     } 
    }); 
} 

sendRequest(0); 
+0

+1只要不要忘記初始化。 – 2012-07-27 03:41:43

+0

@JosephSilber:關於你的第二次編輯,我出於以下原因回滾了:a。我發現前綴增量運算符會產生混淆代碼。這是不必要的,縮小時不會縮短。灣原始代碼在區間[0,19]中循環,因此正確的條件是「<19」,而不是「<20」(比較後增加)。 – 2012-07-27 04:40:46

+0

你說得對,我錯了。就如此容易。對不起,你的代碼搞亂了。 – 2012-07-27 05:42:32