2015-12-04 129 views
0

我想循環10次的ajax請求。我注意到一些奇怪的錯誤,例如int是10,10倍。我已經搜索並發現它與AJAX異步相關。我希望等到ajax請求完成後才能繼續。爲AJAX做while循環?

在此先感謝。

do{ 
    var int=0; 
    $.ajax({...}, 
     success:function(response){ int++; }, 
    }); 
    alert(int); 
}while(int<10); 
+0

會將警報轉移到成功功能中嗎? – spaniol6

+0

ajax的定義是異步的。使其等待擊敗它的目的。 jquery何時是更好的選擇。 http://api.jquery.com/jQuery.when/ – anu

+1

@anu ajax並不總是異步的。是的,ajax的主要用法是async,但是你仍然可以在你的ajax請求中使用'async:false'。 –

回答

1

您可以設置參數async: falseajax對象。

$.ajax({ 
     url: $(this).attr('href'), 
     type: 'GET', 
     async: false, 
     error: function(){ 
      return true; 
     }, 
     success: function(msg){ 
     } 
    }); 
2

如果您success處理程序是指int,那麼,按時間運行int將始終爲0,因爲循環完成後的很長。

如果你真的想呼籲陸續每次運行,不同的值,將呼叫轉移到一個函數,並把它作爲來自阿賈克斯成功處理程序需要:

function myAjax(int) { 
    if (int >= 10) 
    return; 

    $.ajax({ //... 
    success:function(response){ 
     int++; 
     // whatever we need to do with int and the response 

     myAjax(int); 
    } 
    }); 
} 

myAjax(0);