【问题标题】:jQuery "getJSON" from an external domain that doesn't support JSON-P output来自不支持 JSON-P 输出的外部域的 jQuery“getJSON”
【发布时间】:2009-12-04 08:55:23
【问题描述】:

我正在尝试从外部站点上的 JSON 获取数据,但该站点不支持 JSON-P 输出。这是一个无效代码的示例,但很好地说明了我想要实现的目标:

$.getJSON("http://www.bom.gov.au/fwo/IDV60901/IDV60901.94868.json", function(data){
    //Process data here
});

除了本地托管数据或使用 AJAX/PHP 调用下载和处理数据之外,还有其他方法吗?我宁愿不让服务器提供或下载数据,而是让用户的浏览器直接抓取它。

提前致谢!

【问题讨论】:

    标签: javascript jquery json cross-domain jsonp


    【解决方案1】:

    最简单的选择是通过 PHP 代理脚本运行 json 调用, 喜欢这个:

    <?php
    // PHP Proxy
    // Loads a file from any location.
    // Author:Paulo Fierro
    // January 29, 2006
    // usage: proxy.php?url=http://mysite.com/myxml.xml
    
    $session = curl_init($_GET['url']);                    
    curl_setopt($session, CURLOPT_HEADER, false);          
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);   
    $xml = curl_exec($session);                            
    echo $xml;        
    curl_close($session); 
    

    ?>

    并将其用作 ajaxCall 的来源

    $.getJSON("proxy.php?url=http%3A%2F%2Fwww.bom.gov.au%2Ffwo%2FIDV60901%2FIDV60901.94868.json", function(data){
    

    【讨论】:

      【解决方案2】:

      如果没有愿意的外部服务器或服务器端代理,大多数浏览器的Same Origin Policy 不会让您这样做。您可以使用 Flash 尝试一些技巧:

      http://flxhr.flensed.com/

      这假设您的用户安装了 flash,但通常,如果他们安装了 javascript,他们也安装了 flash...

      如果您要查找的数据作为提要来自某个地方,您可以通过Yahoo Pipes 传递它,他们会为您返回 jsonp。

      祝你好运!

      【讨论】:

      • 感谢您的快速提示,我最近一直在深入研究 AS3,所以我一定会往下看。
      猜你喜欢
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 2021-11-15
      • 2012-03-07
      • 1970-01-01
      相关资源
      最近更新 更多