0

我正在处理需要使用 JQuery 的“加载”命令将一个 HTML 文件导入另一个的页面。它应该相当简单——它会引入站点标题的内容(徽标图像、搜索框、菜单栏)。

在我的测试页面上它可以工作,但在现场店面它不起作用,我不知道为什么。

这是我的 JS 文件中的行 - 非常简单:

$("#x-head").load('http://www.sunandfuninoc.com/testingsites/jxinstalls/topparts/ebay/head.html');

应该填充的 HTML div 在我的主页上如下所示:

这是运行良好的测试页面:http: //www.sunandfuninoc.com/testingsites/jxinstalls/topparts/ebay/store.html

这是根本没有加载的实时站点: http: //stores.ebay.com/Top-Parts-Store

有任何想法吗?谢谢!

4

3 回答 3

3

这是由于 JavaScript 在相同的源策略下运行。

除非服务器明确允许,否则在使用 AJAX 时,您不得从单独的远程服务器(即您正在运行的服务器以外的服务器)提取内容。

http://en.wikipedia.org/wiki/Same_origin_policy

除非您调用的服务器允许跨域调用,否则您唯一的选择是不通过 jQuery 而是通过服务器端代理加载页面,例如通过cURL的 PHP 。服务器端语言通常不受此限制。

于 2012-07-31T21:54:14.277 回答
1

它适用于第一种情况,因为您发出的请求与其托管的网站位于同一域中。在第二种情况下,store.ebay.com正在发出请求,并且由于现代浏览器中的安全功能,不允许跨域请求。

于 2012-07-31T21:53:33.803 回答
0

1. load();如果您使用的 url 在同一个域下,将起作用。

2.如果您想加载外部内容,例如store.ebay.com使用代理,如果您使用的是 PHP,您可以制作一个 PHP 文件,使用 cURL 从该站点获取源代码。否则您将无法实现您想要的Access-Controll-Allow-Origin规则原因(这意味着您可以加载不在您的域中的外部内容)。

于 2012-07-31T21:55:50.480 回答