今天看到了一個嵌套的ajax,算是長見識了。html
不過看一眼就知道怎麼回事了。jquery
不是不會,就怕想不到。ajax
1 //發送一個ajax請求,嵌套的ajax請求 2 'ajaxCall': function(url1, data1, url2, data2){ 3 var returnValue = ''; 4 $.ajax({ 5 type: "POST", 6 url: url1, 7 async: false, 8 data: data1, 9 success: function(data3) { 10 //TODO 11 //外層ajax響應成功,就再次發送ajax請求到第二個地址 12 $.ajax({ 13 type: "POST", 14 url: url2, 15 data: data2, 16 async: false, 17 success: function(data4) { 18 //TODO,對returnValue進行賦值 19 } 20 }); 21 } 22 }); 23 return returnValue; 24 }
注:瀏覽器
外層的 AJAX 和內層的 AJAX 的 async 屬性都要設置爲 false, 若是不這樣的話, 兩次請求都是異步的, 可能會致使數據獲取不到, 可是也有一個弊端, 由於同步, 在異步請求時, 瀏覽器是鎖死狀態, 不能進行其餘的操做.異步
附上一個 AJAX 的參數詳解博客連接 [ AJAX 參數詳解 ]async
ps:ui
今天在看 jQuery1.5時,看到了這個$.when(), 使用這個就能解決上面的瀏覽器鎖死狀態.url
放上兩個連接:spa
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 });