2011-08-24 75 views
1

還是新的jQuery的,需要在以下幫助:jQuery的負載問題

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>jQuery demo</title> 
</head> 
<body> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.nav-link').click(function() { 
      var href = $(this).attr('href'); 
      $('#content').load(href, function() { 
       alert("Yeahhhh !"); 
      }); 
      return false; // don't actually follow the link 
     }); 
    }); 
</script> 

<div class="menu"> 
    <ul> 
    <li><a href="http://www.google.com.my/" class="nav-link"> Yeah 1 </a></li> 
    <li><a href="C:\Testing\Yeah1.html" class="nav-link"> Yeah 2 </a></li> 
    </ul> 
</div> 


<div id="content"> 
    ... Initial Content... 
</div> 
</body> 
</html> 

我創建了一個名爲testing.html這個HTML文件並調用yeah1.html測試用另一種簡單的HTML文件。在放置jQuery代碼之前,鏈接可以指向yeah1.html。

但是,放入jQuery代碼後,$('#content').load(href);應該能夠加載其DIV中的內容,並且我甚至還得到了「Yeahhhh!」的消息警告......但仍然沒有加載內容。

回答

4

許多瀏覽器(Chrome,FF)會出於安全原因阻止直接從磁盤加載的文件。

當您使用C:\...引用該文件時,該協議爲file。鏈接最終看起來是這樣的:

<a href="file:///C:\Testing\Yeah1.html" class="nav-link"> Yeah 2 </a> 

要修復它,把你的網站的虛擬文件夾中的文件Yeah1.html並使用絕對或相對路徑通過http協議加載它。

(相對路徑)

<a href="Yeah1.html" class="nav-link"> Yeah 2 </a> 

或(絕對路徑)

<a href="/Yeah1.html" class="nav-link"> Yeah 2 </a> 

或(絕對路徑,完全指明的)

<a href="http://mysite.com/Yeah1.html" class="nav-link"> Yeah 2 </a> 

也就是說,然後作爲Dennis提到的,負載由於違反相同的原產地規則,您的案件將失敗。所以,你可以得到Yeah1,HTML加載,但撥打到google.com會失敗,除非您切換到jsonp

function jsonpCallback(data, status) { 
    alert("data: " + data + ", status: " + status); 
} 

$.ajax({ 
    url: "http://www.google.com.my/", 
    dataType: 'jsonp', 
    jsonpCallback: 'jsonpCallback', 
}); 
+0

你是對的..我想知道如果我把它放在主機上進行測試會更有意義。 它實際上在http請求中工作。 :) – MrCooL

1

加載受制於相同的原產地政策,因此您的請求可能會失敗。

從文檔http://api.jquery.com/load/檢查錯誤VS成功:

$("#success").load("/not-here.php", function(response, status, xhr) { 
    if (status == "error") { 
    var msg = "Sorry but there was an error: "; 
    $("#error").html(msg + xhr.status + " " + xhr.statusText); 
    } 
}); 
1
<li><a href="Yeah1.html" class="nav-link"> Yeah 2 </a></li> 

變化的絕對路徑相對。將Yeah1.html放在與此文件相同的文件夾中。此外谷歌Chrome和Firefox默認不會從磁盤加載內容,使用--allow-file-access-from-files標誌,同時調用,像這樣的鍍鉻:

c:\>chrome --allow-file-access-from-files 

覆蓋。

1

U可以裝載任何東西在您的域中存在,但對於securtiy原因,你無法從加載頁面其他領域。

http://api.jquery.com/load/ 附加說明: 由於瀏覽器安全限制,大多數「Ajax」請求都遵循相同的源策略;該請求無法成功從不同的域,子域或協議中檢索數據。