jQuery.getJSON( url, [数据], [回调] )
我正在尝试使用 jQuery 的 $.getJSON()
从 Google 检索汇率。使用请求:"http://www.google.com/ig/calculator?hl=en&q=1USD=?CAD"
返回一个简单的 JSON 文件:
{
lhs: "1 U.S. dollar",
rhs: "1.03800015 Canadian dollars",
error: "",
icc: true
}
我正在使用以下 jQuery 函数获取加元金额:
$(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 文件,但指示使用了无效标签。
I am trying to retrieve the exchange rate from Google with jQuery's $.getJSON()
. Using the request: "http://www.google.com/ig/calculator?hl=en&q=1USD=?CAD"
returns a simple JSON file:
{
lhs: "1 U.S. dollar",
rhs: "1.03800015 Canadian dollars",
error: "",
icc: true
}
I am using the following jQuery function to get the Canadian dollar amount:
$(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 displays the correct JSON file but indicates that an invalid label is used.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Google 返回纯 JSON,不支持 JSONP(= 封装在回调中的 JSON)。
JSONP 看起来像:
浏览器可以从其他域加载 JSONP 数据,就像可以从其他域加载脚本标签中的 JavaScript 一样。纯 JSON 数据无法作为 JavaScript 执行,这就是它无法从其他域加载到脚本标签内的原因。
在这种特定情况下,Google 可以通过使用简单的 AJAX(因为它是同一域)在 iGoogle 上获取 JSON,但您无法从浏览器内部从您的域请求它。但是,您可以在服务器上查询它,处理结果并将其发送到客户端(您的服务器充当代理)。
Google returns pure JSON and does not support JSONP (=JSON wrapped in a callback).
JSONP looks like:
The browser can load JSONP-Data from other domains like it can load JavaScript in script-tags from other domains. Pure JSON data cannot be executed as JavaScript and that's why it cannot be loaded inside script-tags from other domains.
In this specific case Google can get the JSON on iGoogle by using simple AJAX (because it's the same domain), but you cannot request it from your domain from inside the browser. You can, however, query it on your server, work with the result there and send it to the client (your server acting as a proxy).
除了跨域问题之外,您收到的数据不是有效的 JSON。 密钥需要加引号 。我认为这就是 Firebug 告诉您使用了无效标签的原因。
In addition to the cross-domain problem, the data you received is not valid JSON. The keys need to be quoted. I think that's why Firebug tells you invalid labels are used.
我认为 Google 计算器不支持 JSONP (这是跨平台所必需的)域 JavaScript)。特别是你的
&jsoncallback=?
没有做任何事情。您需要在服务器上使用代理。
I don't think Google calculator supports JSONP (which is required for cross-domain javascript). Especially your
&jsoncallback=?
doesn't do anything.You need to use a proxy on your server.