使用.load()(或任何jQuery ajax函数)从我的域上的任何位置请求数据都可以正常工作。
尝试访问其他域中的URL不起作用。你怎么做呢?另一个域也恰好是我的。
我读到了你可以用PHP做的一个技巧,并制作一个获取内容的代理,然后你在服务器上的php位置使用jQuery的ajax函数,但是仍然在你自己的服务器上使用jQuery ajax这样做算了。
有一个好的插件吗?
编辑:我找到了一个非常好的jQuery插件,允许您使用任何jQuery函数从其他页面请求内容,就像您在自己的域中使用普通的ajax请求一样
帖子:http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/
插件:https://github.com/jamespadolsey/jQuery-Plugins/tree/master/cross-domain-ajax/
答案 0 :(得分:10)
这是因为跨域策略,在排序中,意味着使用客户端脚本(a.k.a.javascript ...),您无法从其他域请求数据。幸运的是,大多数服务器端脚本都不存在此限制。
因此...
使用Javascript:
$("#google-html").load("google-html.php");
PHP中的“google-html.php”:
echo file_get_contents("http://www.google.com/");
会起作用。
答案 1 :(得分:3)
就您的浏览器而言,不同的域=不同的服务器。使用JSONP来执行请求或使用PHP代理。您可以使用jQuery.ajax()
执行跨域JSONP请求。
答案 2 :(得分:3)
一个非常简单的解决方法是使用Yahoo的YQL服务,该服务可以从任何外部站点检索内容。
我已经在这个仅使用JavaScript和YQL的示例的几个站点上成功完成了此操作。 http://icant.co.uk/articles/crossdomain-ajax-with-jquery/using-yql.html
此示例是博客文章的一部分,其中还概述了其他一些解决方案。 http://www.wait-till-i.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/
答案 3 :(得分:1)
我知道另一个有效的解决方案。 它不需要你改变JQuery。它确实要求您可以在您的域中站起来ASP页面。我自己也用过这种方法。
1)创建一个proxy.asp页面,就像本页http://www.itbsllc.com/zip/proxyscripts.html
一样2)然后,您可以执行JQuery加载功能并将其提供给proxy.asp?url = ....... 有一个关于如何格式化它的链接的例子。 无论如何,您将外部页面URL和所需的mime类型作为get变量提供给本地proxy.asp页面。我使用的两种mime类型是text / html和image / jpg。
注意,如果目标页面包含具有相对源链接的图像,则可能无法加载。 我希望这会有所帮助。