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