首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery.getJSON( url,[数据],[回调])

jQuery.getJSON( url,[数据],[回调])
EN

Stack Overflow用户
提问于 2009-10-18 20:54:14
回答 3查看 6.4K关注 0票数 5

我正在尝试用jQuery的$.getJSON()从谷歌检索汇率。使用请求:"http://www.google.com/ig/calculator?hl=en&q=1USD=?CAD"

返回一个简单的JSON文件:

代码语言:javascript
运行
复制
{
  lhs: "1 U.S. dollar",
  rhs: "1.03800015 Canadian dollars",
  error: "",
  icc: true
}

我使用以下jQuery函数来获取加拿大元金额:

代码语言:javascript
运行
复制
$(document).ready(function(){
    $.getJSON("http://www.google.com/ig/calculator?hl=en&q=1USD=?CAD?&label=rhs&format=json&jsoncallback=?",
              function(data){
                  alert(data);
              });
});
</script>

Fire bug显示正确的JSON文件,但指示使用了无效的标签。

EN

回答 3

Stack Overflow用户

发布于 2009-10-18 21:08:09

Google返回纯JSON,并且不支持JSONP (=JSON包装在回调中)。

JSONP看起来像这样:

代码语言:javascript
运行
复制
callbackFunction({json_object: "some_data"})

浏览器可以从其他域加载JSONP数据,也可以从其他域加载脚本标记中的JavaScript。纯JSON数据不能作为JavaScript执行,这就是为什么它不能从其他域加载到脚本标记中的原因。

在这种情况下,谷歌可以通过使用简单的AJAX获取iGoogle上的JSON (因为它是同一个域),但您不能从浏览器内部从您的域请求它。但是,您可以在您的服务器上查询它,在那里处理结果,并将其发送到客户端(您的服务器充当代理)。

票数 7
EN

Stack Overflow用户

发布于 2010-12-26 12:10:49

除了跨域问题,您收到的数据不是有效的JSON。The keys need to be quoted。我想这就是为什么Firebug会告诉你使用了无效的标签。

代码语言:javascript
运行
复制
// this fails
jQuery.parseJSON('{lhs: "1 U.S. dollar", rhs: "1.03800015 Canadian dollars", error: "", icc: true}'));

// this works
jQuery.parseJSON('{"lhs": "1 U.S. dollar", "rhs": "1.03800015 Canadian dollars", "error": "", "icc": true}'));
票数 2
EN

Stack Overflow用户

发布于 2009-10-18 21:11:45

我不认为Google calculator支持JSONP (跨域javascript需要)。尤其是你的&jsoncallback=?什么也不做。

你需要在你的服务器上使用use a proxy

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1586003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档