2010-06-23 57 views
2

我剛剛開始使用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服務器上。

+0

使用FireFox FireBug擴展來檢查正在發出的ajax請求。這將向您顯示請求發生的情況,請求參數和標頭以及響應正文和標頭。這將突出你錯誤的地方。 – 2010-06-23 20:20:53

回答

0

問題解決了!我在本地打開文件(如file://)。我認爲這是導致安全問題或什麼的。無論如何,現在我知道如果我想用chrome測試,我只需要首先將它放到我的Web服務器上。

2

您確定external.html與此頁面位於同一目錄嗎?

+0

是的,它存在於同一個目錄中。 – 2010-06-23 20:46:41

3

無論成功還是失敗,都會執行.load()回調。它只是表明加載操作已完成(是否成功)。

嘗試這樣的事情來獲得詳細信息:

$(".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); 
    } 
}); 

我猜你正在運行到一個問題與same origin policy或路徑external.html不正確。

+0

啊,這可以解釋爲什麼它打印出「加載!」 但是,我複製並粘貼您的代碼,並沒有顯示錯誤消息。然後我添加了一個else語句,它在else語句中運行代碼,再次暗示沒有錯誤! – 2010-06-23 20:53:01

0

我複製了你的HTML文件並引用了我的本地jQuery-1.4.1.min.js文件,它工作正常。 像Adam說的那樣,你應該檢查一下腳本源路徑和external.html路徑是否正確。

+0

這兩個路徑都是正確的。其他jQuery的東西的作品,所以我知道我的路徑是正確的。 external.html與main.html位於同一目錄中。 – 2010-06-23 20:47:42