2014-06-09 97 views
0

我運行async集Ajax請求false內環路,並在停止時在這裏2.櫃檯是腳本jQuery的AJAX異步停止

var x = 0; 
for(i=0; i<10; i++){ 
    $.ajax({ 
      async: false, 
      global: isGlobal, 
      type: 'POST', 
      url: url, 
      dataType: 'json', 
      data: JSON.stringify(body), 
      headers: {'Content-type':'application/json', 'Accept':'application/json'}, 
      success: function(result){ 
      x = result.something.value; 
      }, 
      error: function(){ 
       callback(false); 
      } 
    }); 
    console.log(x); // debug x value 
} 

任何想法,爲什麼這不能正常工作? PS:url是跨域

+0

你不是真的在做阿賈克斯嗎?那什麼意識?請代碼不只是說話,我迷路了! –

+0

我需要做的是爲每個請求改變'x'變量,就是這樣,如果我的代碼錯了,請指向正確的方向。謝謝 –

+0

Ajax代表* Asynchronous Javascript And Xml *,你剛剛通過將async設置爲false來刪除* Asynchronous *部分,所以它不是真正的ajax,它是sjax,*同步的Javascript和Xml *,這有什麼好處? – adeneo

回答

0

我解決了這個問題我的自我。這裏是工作腳本,以防你和訪問者遇到同樣的問題。

var theList = [/*LIST GOES HERE*/]; 
var yourGlobalVar = ''; 
i = 0; 
(function gcr(){ 
    var body = { 
    ID: theList[i].ID 
    }; 

    $.ajax({ 
      async: false, 
      global: isGlobal, 
      type: 'POST', 
      url: url, 
      dataType: 'json', 
      data: JSON.stringify(body), 
      headers: {'Content-type':'application/json', 'Accept':'application/json'}, 
      success: function(result){ 
      yourGlobalVar += result.anything.value; 
      if(i < theList.length - 1){ 
       // wait for the response then call itself 
       i++; 
       gcr(); 
      } 
      } 
    }); 
})();