2010-01-24 24 views
4

看起來我無法通過「AJAX」在當前域名外面打電話。但是我可以在JQuery中調用twitter API(使用JSON)......不都使用XMLHTTP對象?如果是(或不),爲什麼我能夠使用JSON調用另一個域名(使用JQuery),但不使用AJAX?無論如何,Ajax和JSON之間有什麼區別?AJAX VS JSon「跨域內置安全性」問題

回答

7

Twitter API使用JSONP,它不使用XMLHTTPRequest,但使用<script>標記來包含「外部」javascript。這個腳本然後在你自己的javascript中調用一個函數。

沒有這種「黑客」(實際上就是這樣:黑客),谷歌地圖在第三方網站上的集成是不可能的。

這裏有JSONP更多的信息:

http://ajaxian.com/archives/jsonp-json-with-padding

或JSON維基百科文章:

http://en.wikipedia.org/wiki/JSON#JSONP

+0

啊......有道理!謝謝! – mrmuggles 2010-01-24 20:02:02

0

JSON是一種文件格式,而AJAX是JavaScript的一種技術在頁面加載完成後從Web服務器發送和接收數據。 AJAX中的X代表XML(也是一種文件格式),它是JSON的替代品,但它有點誤稱,因爲很多人稱爲AJAX的東西實際上並不使用XML。

LeyBaert先生關於JSONP的鏈接對於實際解釋Twitter API中發生的事情非常有幫助;它根本不是XMLHTMLRequesting,只有另一個腳本標記指向Twitter網站上的一個JavaScript文件,然後在頁面首次加載時隨着頁面的其餘部分加載。

你可以通過這個得到整潔的東西,但是我認爲你可以在頁面加載後(如AJAX)做到這一點,除非你開始搞隱藏IFrames或類似的東西。如果你真的需要獲得AJAX風格的東西,而不需要XMLHTTPRequests,那就是你想要查看的東西;動態地將IFrame添加到文檔中,該文檔引用請求來自其他網站的腳本(或類似文檔)的頁面。有一些討論這個here的利弊。

+0

在頁面加載完成後,這樣做很好。如果你使用的是jQuery,這很容易做到,並且適用於所有瀏覽器。實際上,Google Maps通過JSONP完成所有的服務器通信,並且全部在頁面加載完成後完成。 – 2010-01-24 20:14:42

+1

PimTerry,可以動態地在文檔中插入'

  • 11. 跨域ajax iframe javascript問題
  • 12. AJAX呼叫跨域問題
  • 13. 跨域ajax請求問題
  • 14. 跨域Ajax的問題​​
  • 15. 跨域AJAX調用問題
  • 16. 跨域JavaScript/AJAX問題
  • 17. 跨域jQuery .AJAX問題
  • 18. 快速AJAX/JSON安全問題
  • 19. 是什麼讓跨域ajax不安全?
  • 20. AJAX安全問題
  • 21. Ajax安全問題
  • 22. AJAX安全問題
  • 23. JSON安全問題?
  • 24. WCF安全跨域
  • 25. Ajax安全問題:jQuery ajax()+ PHP scandir()=安全問題?
  • 26. 使用AJAX獲取JSON時JsonRequestBehavior.AllowGet的安全性問題
  • 27. Javascript,ajax,跨域調用,覆蓋內容安全策略
  • 28. 跨子域問題
  • 29. d3.json,d3.xhr和跨域問題
  • 30. jquery跨域問題!