第一種解決辦法 (把異步請求改成同步 這樣失去了ajax異步的優(yōu)勢)
(function(){
var arr = [];
$.ajax({
data:{a:1},
url:'www.123.com',
type:'post',
async:false,//把異步的ajax 改成同步的ajax
dataType:'json',
success:function(data){
//這時候需要這個ajax 請求完成 比如你需要后臺給你返回的data.abc而下一個接口需要這個參數(shù)
arr= data;
},
error:function(){}
});
第二個請求
$.ajax({
data:{b:arr.abc}, // 后臺需要上面ajax的返回參數(shù)
url:'www.123.com/123',
type:'post',
dataType:'json',
async:false,//把異步的ajax 改成同步的ajax
success:function(data){
arr= data;
},
error:function(){}
});
})();
第二種解決方法 用ES6的 Promise
new Promise(function(resolve, reject) {
$.ajax({
url: "url1",
success: function(data) {
resolve(data);
}
});
}).then(function(value) {
return new Promise(function(resolve, reject) {
$.ajax({
url: "url2",
data: {
data: value//第一個請求的返回值
},
success: function(data) {
resolve(data);
}
});
})
}).then(function(value) {
return new Promise(function(resolve, reject) {
$.ajax({
url: "url3",
data: {
data: value//第二個請求的返回值
},
success: function(data) {
console.log("三個請求全部成功");
resolve(data);
}
})
})
});