簡體   English   中英

Ajax Call循環,Ajax jQuery

[英]Ajax Call loop, Ajax jQuery

我需要和建議在這里。

我有這種情況,嘗試獲取一些JSON數據,想到AJAX(使用jQuery)。

我的想法是,我需要更多數據然后1或2個Ajax Call來獲取我需要的所有數據。

因此,我需要進行多個Ajax調用,並嘗試找出最佳方法(最佳實踐)。

首先出現在我腦海中的一個想法是這樣的(它可能有一些語法錯誤甚至更糟糕的東西,現在尋找邏輯):

var dataArr = {
    page:0,
    pageSize : 1000
};


var StoreData = [];

var getSomeData = function () {

    $.ajax({
        type : "GET",
        url : URL,
        data : dataArr,
        dataType : "json",
        error : OnLoadError,
        success :function(data, status){

            StoreData.push[data];
            if(data.length){
                dataArr.page = dataArr.page + 1
                getSomeData();
            }

        }
    });
};

附加信息:

它可以在4-9個Ajax調用gett所有數據(4000-9000項)。

我測試了pageSize : 1000並且工作正常,所以每次通話我肯定可以獲得1000個項目。

所以,如果你可以幫助我一些建議,現有的一些或另一個更好的方法來做到這一點,甚至一些例子,我真的很感激

感謝大家 !

完成后,您可以在服務器端設置一個標志,並將其放入成功函數的status參數中。 這會清理你的代碼。 否則你可以簡單地添加一個while循環,將你的調用定義為同步,並檢查它是否在循環條件內完成。

首先,您需要優化頁面大小。 將其定義為1000是一種簡單的方法。 如果應用程序的性能不重要,請不要閱讀本答復的其余部分:)

我建議采用基於試錯法的方法。 制作一個for循環,為頁面大小嘗試不同的數字(如20,50,100,500,1000,1500等)。 然后記錄每個頁面大小的請求數,以及所有請求的總時間。 比較這些數字,並明智地選擇您的頁面大小。

其次,如果您能夠計算來自服務器的元素數量,那么您可能不必最后發送不必要的請求。 假設您獲得了4650個數據。 你得到1000,+ 1000,+ 1000,+ 1000和+650。 如果你以某種方式弄清楚你的收入低於1000,你就不會發送最后一個請求,不是嗎? 假設響應格式如下:

<li class='item'>XXX</li>
// All list items 
<li class='item'>YYY</li>

然后使用jquery計算li的數量,如果它小於頁面大小,則表示您獲得了所需的所有數據。

最后,如果您知道您的總數據長度超過4000,您可能希望異步發送前4個請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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