UPDATE
在回答你留在其他答案的評論,我只是想確保我瞭解清楚情況:
- 你從本地主機測試,而不是從本地硬盤驅動器(也就是說,您的瀏覽器中的URL包含「http://localhost」,而不是硬盤上的某個位置)
- 當您製作AJAX響應時,
alert(...)
- 結果爲null或其他等效項。
- 該URL有效,可以在瀏覽器中加載。
- 您所請求的網址與原始網頁位於同一網域。
如果這些事情都是真的,那麼我會嘗試以下方法做一些故障排除:
- 使用Firefox並安裝Firebug的(我們需要這個來決定AJAX請求失敗,爲什麼)
- 使用Firebug's console
- 使用jQuery的
ajax(...)
方法,你的代碼包含some logging,幷包括一些日誌代碼,看看發生了什麼事處理失敗。如果您所在的頁面不需要對失敗請求進行可視響應,並且您使用的是Firebug,則可以避免此步驟。
下面的代碼,我會用這個:
$.ajax({
url: "http://stackoverflow.com/",
success: function(html) {
var responseDoc = $(html);
// Output the resulting jQuery object to the console
console.log("Response HTML: ", responseDoc);
}
// Handle request failure here
error: function(){
console.log("Failure args: ", arguments);
}
});
如果您發佈的Firebug日誌的輸出,它應該更容易找出問題,併爲您找到一個解決方案。 Firebug還記錄了XMLHttpRequests
,這樣你就可以準確地看到發送到服務器和從服務器發送的內容,如果Firebug返回某種服務器錯誤(這就是你如何避免#3列出的事情以上)。
你可以使用ajax(...)
方法,但它會更容易使用get(...)
有一個回調,就像這樣:
responseDoc
將是一個jQuery對象,你可以用它來提取元素和像對待任何其他jQuery對象一樣對待。您可以使用jQuery manipulation方法從responseDoc
中提取內容並以任何您想要的方式將其添加到主文檔中。
如果您需要$.ajax(...)
方法提供的額外功能,您可以使用以下代碼。
$.ajax({
url: "http://stackoverflow.com/",
success: function(html) {
var responseDoc = $(html);
}
error: function(XMLHttpRequest, textStatus, errorThrown){
// Handle errors here
}
});
請參閱我的編輯關於從find()調用沒有收到有效的返回。 – 2009-11-07 19:50:05
我試過你的代碼樣本,它包含一個純粹的html文檔,其中包含id ='someElement'的一個div,並且無法獲得任何警告但是null或object [Object]。你可以添加一些解釋如何使用find()調用返回的對象嗎? – 2009-11-07 21:53:20