2009-11-29 21 views
1

的YUI的文檔頁面「獲取」效用說:YUI「獲取」實用程序來解析JSON響應?

獲取工具是理想的加載你的 自己的腳本,CSS逐漸 (延遲加載),或者從源檢索 跨域JSON數據在 你有完全信任。

...但沒有任何實際的例子來說明如何去做。他們的一個示例實際上並未從遠程服務器請求JSON文檔,而是包含實際JavaScript以及JSON數據的文檔。

我只對來自Google Maps API HTTP(REST)接口的JSON響應感興趣。由於我無法使用「連接」實用程序執行跨站點腳本,因此我正在嘗試「獲取」實用程序。但是,僅僅將一些JSON數據插入頁面當然不會做任何事情。我必須將它分配給一個變量。但是如何?

此外,只需將JSON數據插入頁面,Firefox就會抱怨存在JavaScript錯誤。可以理解! Plain ol'JSON數據不會被解析爲有效的JavaScript。

任何想法?

回答

0

好的。看起來沒有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

0

通常在這種情況下,最簡單的方法就是返回調用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

0

肖恩 - 你可能會發現,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