嵌套的 ajax 請求

今天看到了一個嵌套的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
            });
相關文章
相關標籤/搜索