0

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

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

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

提前致谢!

4

2 回答 2

5

最简单的选择是通过 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){
于 2009-12-04T13:19:31.280 回答
1

大多数浏览器的同源策略不允许您在没有愿意的外部服务器或服务器端代理的情况下执行此操作。您可以使用 Flash 尝试一些技巧:

http://flxhr.flensed.com/

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

或者

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

祝你好运!

于 2009-12-04T09:02:44.740 回答