2010-03-23 25 views
0

我有一個php文件處理數據庫中的記錄添加到數組。jquery重複過程一次從php文件得到回覆

例如在陣列我有5個項目

 aray an='abc','xyz','ert','wer','oiu' 

我想打電話給j中查詢AJAX方法

um = an.split(','); 
    var counter = 0; 
    if(counter < uemail.length) { 
    $("#sending_count").html("Processing Record "+ ecounter +" of " + an.length); 
    var data = {uid: um[counter] 
    $.ajax({ 
    type: "POST", 
    url: "save.php", 
    data: data, 
    success: function(html){ 
    echo "added"; 
    counter++; 
    } 

它做一個PHP文件,它完成所有prcess但保存。 PHP仍然在工作 我想要的一個進程後,它停止直到save.php過程完成,然後等待下一個10秒,並開始添加第二個元素。

感謝

+1

我知道這不是答案,但是在這裏有一個'}'缺少:'var data = {uid:um [counter]'和一個'})'在代碼末尾。 – 2010-03-23 12:08:31

回答

1

不知道我是否正確理解你的問題,但您可能需要使用同步(阻塞)AJAX調用,而不是異步(非阻塞)。當你進行異步調用時,代碼執行會立即繼續,並在後臺留下Ajax調用。同步調用會阻止代碼執行,直到請求完成。

$.ajax({ async: false, ... }); 
0

這不是我的問題,爲什麼你想這樣做,雖然你想嘗試可能會導致一個緩慢和無響應的用戶界面。

你會想要一個while循環,而不是一個if循環:

while(counter < uemail.length) { 

擺在面前的其它解決方案,

你要關掉async標誌以確保通話結束,然後執行下一行。 delay()函數也將有所幫助。

$.ajax({ 
    async: false, //ensure our requests are synchronous. 
    type: "POST", 
    url: "save.php", 
    data: data, 
    success: function(html){ 
     echo "added"; //?? not a valid javascript function 
     delay(10000); //10000ms = 10 seconds. 
    } 
    counter++;  

}

而且,echo是不是一個有效的jQuery/javascript函數,你的括號是有些不清楚了,大概misssing。

我上面假設counter++在你的循環之外,因爲如果它不是,那麼你失敗了,那麼它可能會永遠持續下去。