我創建了下面的功能,基本上解析給定的URL的HTML的http請求,掃描爲一定的階級和處理它找到的文本:最小化jQuery的AJAX解析
我的函數的小樣本:
function displayRating(theID){
var $theUrl = $('#' + theID + ' > a').attr('href');
jQuery.support.cors = true;
var num, str, nums=[], avgnum, avgstr, avgnums=[];
$.ajax({
url: $theUrl,
type: "GET",
timeout: 3000,
dataType: "text",
success: function(data) {
$(data).find(".count").each(function() {
str = $(this).text();
num = parseInt(str.substring(1,str.length-1), 10);
nums.push(num);
});
var totalSum = 0;
for (var i = 0; i < nums.length; i++){
totalSum += nums[i];
}
more code here...
});
}
我把這個函數調用了15次,因爲我需要顯示幾個可以從幾個頁面收集的數據。通過這種方法,我希望http
請求的數量與函數被調用的數量(15)相同。但是,我得到的數字非常龐大(340),這意味着在解析HTML時,它還會在後臺請求包含在我調用的URL中的所有圖像。這意味着頁面的加載時間不可接受(5-6秒)。
我的問題是:我可以優化這個功能嗎,讓它以純文本形式讀取HTML文件而不需要在後臺加載所有圖片?有什麼辦法來減少這些要求?
注意:不幸的是,PHP不是一種選擇。
你如何調用displayRating()函數? – 2013-04-30 09:58:12
你可以使用[jquery defferred](http://learn.jquery.com/code-organization/deferreds/jquery-deferreds/)嗎?這樣,只有在所有ajax回調完成後,您才能完成您的工作。你甚至可以使用[this](http://stackoverflow.com/questions/5627284/pass-in-an-array-of-deferreds-to-when)線程中看到的ajax callbak數組。 – Alepac 2013-04-30 10:05:19
@roasted該函數在文檔末尾簡單地稱爲「displayRating(someid)」。 – otinanai 2013-04-30 10:11:03