Javascript 如何使用.load()从另一个域获取内容?

Javascript 如何使用.load()从另一个域获取内容?,javascript,jquery,ajax,cross-domain,Javascript,Jquery,Ajax,Cross Domain,使用.load()(或任何jQuery ajax函数)从我的域中的任何位置请求数据都可以正常工作 但是,尝试访问其他域中的URL不起作用。你是怎么做到的?另一个领域碰巧也是我的 我读过一篇关于PHP的技巧文章,你可以使用PHP制作一个代理来获取内容,然后在服务器上的PHP位置上使用jQuery的ajax函数,但是在你自己的服务器上仍然使用jQuery ajax,所以这不算 有好的插件吗 编辑:我发现了一个非常好的jQuery插件,它允许您使用任何jQuery函数从其他页面请求内容,就像您自己域中

使用.load()(或任何jQuery ajax函数)从我的域中的任何位置请求数据都可以正常工作

但是,尝试访问其他域中的URL不起作用。你是怎么做到的?另一个领域碰巧也是我的

我读过一篇关于PHP的技巧文章,你可以使用PHP制作一个代理来获取内容,然后在服务器上的PHP位置上使用jQuery的ajax函数,但是在你自己的服务器上仍然使用jQuery ajax,所以这不算

有好的插件吗

编辑:我发现了一个非常好的jQuery插件,它允许您使用任何jQuery函数从其他页面请求内容,就像您自己域中的普通ajax请求一样

该职位:


插件:

这是因为跨域策略,在排序中,这意味着使用客户端脚本(又称javascript…)无法从另一个域请求数据。幸运的是,这种限制在大多数服务器端脚本中并不存在

所以

Javascript:

$("#google-html").load("google-html.php");
“googlehtml.PHP”中的PHP:


就您的浏览器而言,将工作。

不同的域=不同的服务器。可以使用JSONP执行请求,也可以使用PHP代理。您可以使用
jQuery.ajax()
来执行跨域JSONP请求。

一个非常简单的解决方法是使用Yahoo的YQL服务,它可以从任何外部站点检索内容

我已经在几个网站上成功地做到了这一点,下面的例子只使用JavaScript和YQL。

这个例子是一篇博客文章的一部分,文章还概述了一些其他的解决方案。

我知道另一种解决方案有效。 它不需要修改JQuery。它确实要求您可以在域中建立ASP页面。我自己也用过这种方法

1) 创建一个类似于此页面上的proxy.asp页面

2) 然后,您可以执行JQuery加载函数,并向其提供proxy.asp?url=。。。。。。。 在这个链接上有一个例子,说明如何准确地格式化它。 无论如何,将外部页面URL和所需mime类型作为get变量提供给本地proxy.asp页面。我使用的两种mime类型是text/html和image/jpg

注意,如果您的目标页面有带有相对源链接的图像,则这些图像可能不会加载。
我希望这会有所帮助。

只要这方面没有限制,而且许多共享主机服务都会禁用此功能。如果你是这样的话,你可能想研究一下使用Curl True,我假设它使用的是一种收费更高的托管服务。收费更高的托管服务禁用
allow\u url\u fopen
。这对安全性更好。谢谢,我在上面的编辑中引用的插件实际上使用了:D
echo file_get_contents("http://www.google.com/");