簡體   English   中英

jQuery中的多個AJAX請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM