嵌套的 ajax 请求

今天看到了一个嵌套的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 参数详解 ]

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
            });
posted @ 2017-06-25 18:01  码上猿梦  阅读(6981)  评论(0编辑  收藏  举报