YUI“获取”实用程序来解析JSON响应?

问题描述:

的YUI的文档页面“获取”效用说:YUI“获取”实用程序来解析JSON响应?

获取工具是理想的加载你的 自己的脚本,CSS逐渐 (延迟加载),或者从源检索 跨域JSON数据在 你有完全信任。

...但没有任何实际的例子来说明如何去做。他们的一个示例实际上并未从远程服务器请求JSON文档,而是包含实际JavaScript以及JSON数据的文档。

我只对来自Google Maps API HTTP(REST)接口的JSON响应感兴趣。由于我无法使用“连接”实用程序执行跨站点脚本,因此我正在尝试“获取”实用程序。但是,仅仅将一些JSON数据插入页面当然不会做任何事情。我必须将它分配给一个变量。但是如何?

此外,只需将JSON数据插入页面,Firefox就会抱怨存在JavaScript错误。可以理解! Plain ol'JSON数据不会被解析为有效的JavaScript。

任何想法?

好的。看起来没有Google的HTTP Geocoding接口支持JSONP,没有办法做到这一点。 :(

+0

雅虎的地理编码API,虽然。总的来说,我发现雅虎的API更友好。 – 2009-11-29 17:24:50

+0

有链接?从我看到的,雅虎的API甚至不支持JSON ... http://developer.yahoo.com/maps/rest/V1/geocode.html – Sean 2009-11-29 19:03:02

通常在这种情况下,最简单的方法就是返回调用json的回调函数。例如:

function xdCallback(json) { 
    // here I can do whatever I need with json, maybe 
    SomeModule.heresTheJson(json); 
    // or 
    globalVar.json = json; 
    // etc 
} 

等等你的服务器端返回不只是JSON,而是类似:

xdCallback({ json: 'goes', here: true }); 

...执行“脚本”当您通过Ajax调用得到它,你已经设定好了。

+0

呀。不幸的是,我无法控制远程资源。 (这是谷歌地图HTTP API ...是的,这是跨网站,但我相信谷歌。) – Sean 2009-11-29 16:59:52

肖恩 - 你可能会发现,YUI Connection Manager的XDR的支持是你在找什么 -

http://developer.yahoo.com/yui/examples/connection/xdr.html(YUI 2) http://developer.yahoo.com/yui/3/examples/io/io-xdr.html(YUI 3)

使用连接管理器( YUI 2)或IO(YUI 3)来引入JSON,然后使用代码行中的JSON组件解析JSON,一旦它被加载,就可以解析JSON。

如果Google或Yahoo!拥有必要的跨域支持相关的服务器,你应该做生意。

-Eric

+0

嗨Eric, 事实上,他们都没有跨域支持。 :( 肖恩 – Sean 2009-12-01 08:39:06

我已经使用YAHOO.lang.JSON.parse将字符串解析为json。也可以使用字符串化方法从JSON返回一个字符串:

http://developer.yahoo.com/yui/docs/YAHOO.lang.JSON.html