我正在尝试用jQuery的$.getJSON()
从谷歌检索汇率。使用请求:"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文件,但指示使用了无效的标签。
发布于 2009-10-18 21:08:09
Google返回纯JSON,并且不支持JSONP (=JSON包装在回调中)。
JSONP看起来像这样:
callbackFunction({json_object: "some_data"})
浏览器可以从其他域加载JSONP数据,也可以从其他域加载脚本标记中的JavaScript。纯JSON数据不能作为JavaScript执行,这就是为什么它不能从其他域加载到脚本标记中的原因。
在这种情况下,谷歌可以通过使用简单的AJAX获取iGoogle上的JSON (因为它是同一个域),但您不能从浏览器内部从您的域请求它。但是,您可以在您的服务器上查询它,在那里处理结果,并将其发送到客户端(您的服务器充当代理)。
发布于 2010-12-26 12:10:49
除了跨域问题,您收到的数据不是有效的JSON。The keys need to be quoted。我想这就是为什么Firebug会告诉你使用了无效的标签。
// 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}'));
发布于 2009-10-18 21:11:45
我不认为Google calculator支持JSONP (跨域javascript需要)。尤其是你的&jsoncallback=?
什么也不做。
你需要在你的服务器上使用use a proxy。
https://stackoverflow.com/questions/1586003
复制相似问题