今天看到了一個嵌套的ajax,算是長見識了。
不過看一眼就知道怎麼回事了。
不是不會,就怕想不到。
//發送一個ajax請求,嵌套的ajax請求
'ajaxCall': function(url1, data1, url2, data2){
var returnValue = '';
$.ajax({
type: "POST",
url: url1,
async: false,
data: data1,
success: function(data3) {
//TODO
//外層ajax響應成功,就再次發送ajax請求到第二個地址
$.ajax({
type: "POST",
url: url2,
data: data2,
async: false,
success: function(data4) {
//TODO,對returnValue進行賦值
}
});
}
});
return returnValue;
}
注: 外層的 AJAX 和內層的 AJAX 的 async 屬性都要設置爲 false, 如果不這樣的話, 兩次請求都是異步的, 可能會導致數據獲取不到, 但是也有一個弊端, 因爲同步, 在異步請求時, 瀏覽器是鎖死狀態, 不能進行其他的操作。
附上一個 AJAX 的參數詳解博客鏈接 [ AJAX 參數詳解 ]
ps:
今天在看 jQuery1.5時,看到了這個$.when(), 使用這個就能解決上面的瀏覽器鎖死狀態.
放上兩個鏈接:
var ajax1= $.ajax({ url: url1, data: data1 }); var ajax2= $.ajax({ url: url2', data: data }); var ajax3= $.ajax({ url: url3, data: data }); $.when(ajax1,ajax2,ajax3) .done(function(data, textStatus, jqXHR){ //TODO }) .fail(function(data, textStatus, jqXHR){ //TODO });