2010-03-03 27 views
12

我正在嘗試使用AJAX(XMLHttpRequest)實現對Wikipedia的API的簡單請求。如果我在Firefox的地址欄中輸入網址,我會得到一個整齊的XML,而不會出現在那裏。然而,調用完全相同的網址:使用AJAX查詢維基百科的API(XMLHttpRequest)

// this is my XMLHttpRequest object 
httpObjectMain.open("GET", "http://en.wikipedia.org/w/api.php?action=query&format=xml&prop=langlinks&lllimit=500&titles=kaas", true); 
httpObjectMain.send(null); 

返回一個空響應。根據FireBug,我得到了200 OK的迴應,但內容只是空的。

我懷疑我可能在GET請求的頭部缺少一些東西。

幫助! (並且非常感謝!)

回答

17

The Wikipedia API確實支持JSONP。 您的查詢string'll成爲這樣的事:

http://en.wikipedia.org/w/api.php?action=query&format=json&callback=test&prop=langlinks&lllimit=500&titles=kaas 

但是,你必須建立JSONP處理器(或者你可以使用你喜愛的圖書館這樣做),從XML轉換爲JSON格式輸出你選擇並創建回調函數來解析結果並在頁面上完成所需的工作。

+0

謝謝,這聽起來像一條探索的路徑。 –

+0

請記住,使用JSONP技術上,您不使用XMLHttpRequest,而是使用腳本注入技術。 –

+0

爲我工作!解析返回的JSON是另一個冒險,但數據返回很好。 –

-1

瀏覽器將不允許您將XHR發送到頁面以外的其他域。這是出於安全目的。

我看到的一種方法是在頁面託管的域上設置代理,將請求傳遞給實際的api服務器。請參閱http://ajaxpatterns.org/Cross-Domain_Proxy