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