2010-04-29 155 views
1

在下面的示例中,當我單擊按鈕時,它會顯示「已執行加載」,但是未顯示任何文本爲什麼jquery .load()從外部網站加載文本文件?

我有一個clientaccesspolicy.xml在根目錄和我能夠從異步的Silverlight 加載相同的文件。所以我想我應該可以從AJAX以及訪問。

如何更改文件http://www.tanguay.info/knowsite/data.txt的正文顯示在#content元素中?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <script type="text/javascript" 
     src="http://www.google.com/jsapi"></script> 
     <script type="text/javascript"> 
      google.load("jquery", "1.3.2"); 
      google.setOnLoadCallback(function() { 
       $('#loadButton').click(loadDataFromExernalWebsite); 
      }); 
      function loadDataFromExernalWebsite() { 
       $('#content').load('http://www.tanguay.info/knowsite/data.txt', function() { 
        alert('Load was performed.'); 
       }); 
      } 
     </script> 
    </head> 
<body> 
    <p>Click the button to load content:</p> 
    <p id="content"></p> 
    <input id="loadButton" type="button" value="load content"/> 
</body> 
</html> 

回答

1

我不認爲任何瀏覽器服從clientaccesspolicy.xmlcrossdomain.xml對XMLHttpRequest的。

您還可以查看其他機制,如Cross-Origin Resource Sharing。這是Firefox 3.5及更高版本的supported

+0

我也直接在根目錄中放了一個crossdomain.xml,仍然沒有讀取任何文本。 – 2010-04-29 04:02:23

+0

跨域用於Flash。您放置的任何文件都不允許來自其他站點的JavaScript從腳本調用加載。 – 2010-04-29 04:04:39

4

Clientaccesspolicy對javascript沒有影響。大多數(也許都是?)現代瀏覽器將阻止您運行跨站腳本,因爲這是一種安全風險。

您的替代方案是通過您自己的網站上的文件代理該網站,例如/proxy.php?loadurl=http://theothersite.com,然後通過Javascript調用該文件,由於該文件來自您的域,因此將被允許。

+0

我試着用這個http://www.tanguay.info/web/getdata/index.php?url=http://www.tanguay.info/knowsite/data.txt在內部通過PHP/CURL獲取文本,適用於任何沒有clientaccesspolicy.xml的站點的silverlight,因此它應該在這裏工作。我該如何調試?在Firebug中,我看到.load()正在執行,但不是它返回的內容,什麼錯誤等.-( – 2010-04-29 04:10:27

+0

使用這樣的代理腳本可以在任何情況下工作,但爲什麼不只是添加一個'console.log'語句來查看正在被回顯的內容,並且firebug **會告訴你所有的HTTP請求和它們的響應,只要你有控制檯打開的話 – 2010-04-29 04:15:06

+0

感謝console.log的提示,但是在firebug中我能得到什麼http請求/響應/錯誤信息,在此發佈具體問題:http://stackoverflow.com/questions/2734887/how-to-get-firebug-to-tell-me-what-error-jquerys-load-正在返回 – 2010-04-29 05:04:40