在页面加载时,我需要调用API.当所有AJAX调用完成(完成)后,我想解锁UI.问题是我不知道有多少次我会调用API.它可能是一次或10次.
我的代码:
$(document).ready(function () {
callAPI(yourApiKey);
});
Run Code Online (Sandbox Code Playgroud)
和功能:
function getRates(yourAPIKey, contractCode, startDate, endDate) {
// I did cut some code here
$.ajax({
url: ratesEnquiry,
type: 'GET',
dataType: "jsonp",
jsonp: "callback",
complete: function (response, responseCode) {
},
success: function (json) {
$.each(json, function (index, value) {
populateValues("rate", this.ContractCode, this.RoomTypeCode, this.Date.substr(0, 10), this.RoomPrice);
populateValues("hrate", this.ContractCode, this.RoomTypeCode, this.Date.substr(0, 10), this.RoomPrice);
});
}
});
}
function getAvailability(yourAPIKey, contractCode, startDate, endDate) {
// I've cut off some code here as well
$.ajax({
url: availabilityEnquiry,
type: 'GET',
dataType: "jsonp",
jsonp: "callback",
//jsonpCallback: "jsonpCallback",
complete: function (json, responseCode) {
//console.log(response); console.log(responseCode);
//alert("complete");
},
success: function (json) {
$.each(json, function (index, value) {
populateValues("avail", this.ContractCode, this.RoomTypeCode, this.Date.substr(0, 10), this.Quantity);
populateValues("havail", this.ContractCode, this.RoomTypeCode, this.Date.substr(0, 10), this.Quantity);
// alert(this.RoomPrice);
});
}
});
}
function callAPI(yourAPIKey) {
// I've cut off some code here
$.blockUI({ message: '<span class="loader green" original-title="1Loading, please wait…"></span><h3> Please wait...</h3>' });
$.ajax({
url: enquiry,
type: 'GET',
dataType: "jsonp",
jsonp: "callback",
complete: function (response, responseCode) {
},
success: function (json) {
$.each(json.Contracts, function (index, contract) {
ContractsArray[Count] = contract.ContractCode;
Count++;
});
for(var i = 0; i < Count; i++){
getAvailability(yourAPIKey, ContractsArray[i], startDate, endDate);
getRates(yourAPIKey, ContractsArray[i], startDate, endDate);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
我可以使用ajaxStop或ajaxComplete吗?
小智 5
使用计数器并检查每个调用是否为该计数器添加1,并且每个结束减1到该计数器,如果计数器为0,则表示所有api调用都已完成简单示例:
var calls = 0;
function makeCall(url) {
calls++;
$.ajax({
complete: function(resp) {
calls--;
}
});
}
Run Code Online (Sandbox Code Playgroud)