看起來我無法通過「AJAX」在當前域名外面打電話。但是我可以在JQuery中調用twitter API(使用JSON)......不都使用XMLHTTP對象?如果是(或不),爲什麼我能夠使用JSON調用另一個域名(使用JQuery),但不使用AJAX?無論如何,Ajax和JSON之間有什麼區別?AJAX VS JSon「跨域內置安全性」問題
回答
Twitter API使用JSONP,它不使用XMLHTTPRequest,但使用<script>
標記來包含「外部」javascript。這個腳本然後在你自己的javascript中調用一個函數。
沒有這種「黑客」(實際上就是這樣:黑客),谷歌地圖在第三方網站上的集成是不可能的。
這裏有JSONP更多的信息:
http://ajaxian.com/archives/jsonp-json-with-padding
或JSON維基百科文章:
JSON是一種文件格式,而AJAX是JavaScript的一種技術在頁面加載完成後從Web服務器發送和接收數據。 AJAX中的X代表XML(也是一種文件格式),它是JSON的替代品,但它有點誤稱,因爲很多人稱爲AJAX的東西實際上並不使用XML。
LeyBaert先生關於JSONP的鏈接對於實際解釋Twitter API中發生的事情非常有幫助;它根本不是XMLHTMLRequesting,只有另一個腳本標記指向Twitter網站上的一個JavaScript文件,然後在頁面首次加載時隨着頁面的其餘部分加載。
你可以通過這個得到整潔的東西,但是我認爲你可以在頁面加載後(如AJAX)做到這一點,除非你開始搞隱藏IFrames或類似的東西。如果你真的需要獲得AJAX風格的東西,而不需要XMLHTTPRequests,那就是你想要查看的東西;動態地將IFrame添加到文檔中,該文檔引用請求來自其他網站的腳本(或類似文檔)的頁面。有一些討論這個here的利弊。
在頁面加載完成後,這樣做很好。如果你使用的是jQuery,這很容易做到,並且適用於所有瀏覽器。實際上,Google Maps通過JSONP完成所有的服務器通信,並且全部在頁面加載完成後完成。 – 2010-01-24 20:14:42
PimTerry,可以動態地在文檔中插入'
啊......有道理!謝謝! – mrmuggles 2010-01-24 20:02:02