嵌套的 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 });