我剛剛開始使用jQuery,並且在做一些令人尷尬的簡單操作時遇到了麻煩:使用.load()將外部HTML插入主頁面。jQuery load()方法的問題
這裏的主頁:
<html>
<head>
<script src="js/jquery-latest.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$(".log").ajaxError(function() {
$(this).text('Ajax error.');
});
$('.result').load('external.html', function() {
$('.log').text('Loaded.')
});
});
</script>
</head>
<body>
<div class="log">
</div>
<div class="result">
</div>
</body>
</html>
而這裏的external.html:
<p>Some external content!</p>
當我在瀏覽器中打開這個頁面, 「裝」。插入到.log div中,但外部HTML未插入到.result div中。另外,即使我刪除external.html或重命名文件,它仍然會顯示「已加載」。如果找不到文件,是不是應該是Ajax錯誤?它似乎沒有.load()抓取數據。
編輯:基於chrissr的建議下,我改變了代碼:「一切正常」
$(".result").load("external.html", function(response, status, xhr) {
if (status == "error") {
var msg = "Sorry but there was an error: ";
$(".log").html(msg + xhr.status + " " + xhr.statusText);
} else {
var msg = "Everything worked fine!";
$(".log").html(msg);
}
});
當我運行它,它插入進入.log分區。
編輯2:剛試過在Firefox中,它的工作原理! (我以前使用過Chrome)。我認爲jQuery適用於Chrome,對吧?
編輯3:問題解決了!我在本地打開文件(如file://)。我認爲這是導致安全問題或什麼的。無論如何,現在我知道如果我想用chrome測試,我只需要首先將它放到我的Web服務器上。
使用FireFox FireBug擴展來檢查正在發出的ajax請求。這將向您顯示請求發生的情況,請求參數和標頭以及響應正文和標頭。這將突出你錯誤的地方。 – 2010-06-23 20:20:53