2010-04-29 110 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