[英]Multiple AJAX requests in jQuery
我有一個函數從兩個位置提取數據,並將返回的內容放在顯示給用戶的模式對話框中。
這兩個請求都是異步的,因為它們是跨域的。 問題在於我不希望在兩個請求都完成加載之前顯示模態。 在加載模態之前,如何檢查以確保兩個請求都已完成?
我已經嘗試將openModal函數放在第二個請求的成功處理程序中,並且在第一個請求在第二個請求之前完成加載時有效,但有時情況並非如此。
這是我的代碼的副本:
function loadData(id) {
$.ajax({
type: 'GET',
url: 'https://someurl.com/v1.0/controller1/' + id,
dataType: 'jsonp',
success: function(data) {
// Do some stuff to the data
}
});
$.ajax({
type: 'GET',
url: 'https://someurl.com/v1.0/controller2/' + id,
dataType: 'jsonp',
success: function(data) {
// Do some stuff to the data
openModal();
}
});
}
function openModal() {
// Open the modal
}
看看新版本的jQuery - 1.5。 它完全支持您的問題,您可以查看此博客文章以解決您的問題: http : //www.erichynds.com/jquery/using-deferreds-in-jquery/
$.when(
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", {
tags: "moon",
tagmode: "any",
format: "json"
}),
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", {
tags: "bird",
tagmode: "any",
format: "json"
})).then(function (res1, res2) {
});
您可以將其中一個ajax請求放在另一個請求的成功回調中,但這不會像讓它們同時請求它們那樣高效。 然后你只需要將openModal調用放在內部ajax請求的成功回調中。 如果找到更好的選擇,這個解決方案對您有用,那么這將是一個快速而簡單的解決方案。
我會繼續思考這一個......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.