【问题标题】:How do you get content from another domain with .load()?如何使用 .load() 从另一个域获取内容?
【发布时间】:2011-03-16 02:48:58
【问题描述】:

使用 .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/

【问题讨论】:

    标签: javascript jquery ajax cross-domain


    【解决方案1】:

    这是因为跨域策略,在某种程度上,这意味着使用客户端脚本(a.k.a. javascript...)您不能从另一个域请求数据。幸运的是,大多数服务器端脚本中不存在此限制。

    所以...

    Javascript:

    $("#google-html").load("google-html.php");
    

    “google-html.php”中的 PHP:

    echo file_get_contents("http://www.google.com/");
    

    会起作用的。

    【讨论】:

    • 只要对此没有任何限制,许多共享主机服务都会禁用此功能。如果您遇到这种情况,您可能需要考虑使用 Curl curl.haxx.se
    • 没错,我认为使用的是付费更好的托管服务之一。
    • 更好的付费托管服务禁用allow_url_fopen。这对安全性更好。
    【解决方案2】:

    就您的浏览器而言,不同的域 = 不同的服务器。使用 JSONP 执行请求或使用 PHP 代理。您可以使用jQuery.ajax() 进行跨域JSONP 请求。

    【讨论】:

      【解决方案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/

      【讨论】:

      • 谢谢,我在上面的编辑中引用的插件实际上使用了它:D
      【解决方案4】:

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

      1) 创建一个类似本页http://www.itbsllc.com/zip/proxyscripts.html的proxy.asp页面

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-22
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        • 2014-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多