ajax的嵌套请求案例源码

今天看到了一个嵌套的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(), 使用这个就能解决上面的浏览器锁死状态.

放上两个链接:

  • $.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
            });

复制代码

你可能感兴趣的:(jQuery,&,Ajax,前端)