我試圖加載一個HTML文件,搜索一個字符串裏面,如果沒有找到,加載另一個文件並重復該過程(總共約5-6個文件)。
這裏是我的過程來進一步說明:
- 負載的file1.html
- 如果找到,告訴用戶(和結束進程)
- 如果沒有找到一個字符串搜索,移動到下一個文件並使用file2.html重複步驟1
我一直在試圖圍繞jQuery推遲AJAX調用的對象。簡單地說,我到目前爲止所提出的是,如果找到字符串,則解析主延遲對象(mainDef
) - 這可能會阻止腳本加載第二個文件,因爲沒有必要。
否則(即,如果在第一個文件中沒有找到字符串),它會加載第二個文件。然後是第三個,依此類推。
這裏是我的代碼:
// var $q = string to be searched
// resolved when answer found
var mainDef = $.Deferred();
// resolved when not found in one day
var dayDef = $.Deferred();
$.ajaxSetup({
success: function(data) {
var $result = $(data).find("td:contains('"+ $q +"')");
if ($result.length !== 0) {
mainDef.resolve();
return data;
}
else {
return false;
}
},
dataType: 'html',
});
function one() {
return $.ajax({
url: 'one.html'
});
}
function two() {
return $.ajax({
url: 'two.html'
});
}
$.when(one(), two()).then(
// success
function(data) {
var $result = $(data).find("td:contains('"+ $q +"')");
// found it
if ($result.length !== 0) {
$success.removeClass('hidden');
}
else {
$error.removeClass('hidden');
}
},
// fail
function() {
alert("Promise failed");
}
);
的問題是,我無法阻止經歷的第二個AJAX請求,並muddles事情對我來說,因爲在$.when()
/.then()
塊時,成功回調沒有得到響應文本(在變量data
。
我不太確定這是更具概念性的問題,我有技術或者技術問題。我意識到我需要運行2級如果找到了字符串,它會解析主層並退出該腳本,如果沒有找到,它將解決延遲的「低級」,同時繼續主要級別。
所以我的問題是:我怎麼搜索字符串中AJAX'd文件,如果沒有找到,加載另一個文件?
而不是敲我的頭這,我已經決定要解決這個項目的問題,通過合併文件,使得它只需加載一個HTML文件 - 我仍然想知道我的初衷是否可能,所以如果有人知道我很想聽到它! – wzub 2012-03-25 10:51:17