我有一對嵌套的AJAX請求行爲不正確。 第一個獲得albums
的列表,第二個獲得每個專輯的執行權,給我一個tracks
的列表。奇怪的AJAX行爲與循環
$.ajax({
url:getPHPSite(),
method:"POST",
data:{
query: "SELECT id_album FROM albums;"
},
success: function(response){
var albums=JSON.parse(response);
for(var i=0; i<albums.length;i++){
var albumID=albums[i]['id_album'];
getTracks(function(courses) {
//do something
}
}, albumID);
}
}, ....//error handler and everything else
的getTracks()
函數實際上執行第二AJAX請求,並用一callback
function getTracks(callback, albumID){
$.ajax({
url:getPHPSite(),
method:"POST",
data:{
query: "SELECT idtracks FROM tracksWHERE id_album=" + albumID + ";"
},
success: function(response){
array_tracks=JSON.parse(response);
callback(array_tracks);
}, //...everything else
返回陣列軌道的通過將斷點,我發現,第一for loop
被單獨執行
albumID=1
albumID=2
albumID=3
...end
,然後才執行getTracks()
。
我想getTracks()
爲每個專輯迭代執行。
爲什麼會發生,我該如何解決?
這是因爲JavaScript是同步的。在這裏閱讀答案:http://stackoverflow.com/questions/2035645/when-is-javascript-synchronous 基本上,你正在創建AJAX調用,但循環之後繼續AJAX解析。 – Hoyen
你應該**從不**通過ajax發送一個mysql查詢批發!我希望這只是一個演示站點,因爲如果您執行查詢時沒有任何形式的輸入環境清潔,您就會招致麻煩! –
是的,這是一個演示,不用擔心。感謝您的鏈接@Hoyen –