我對同一個原產地政策有疑問...我必須做些什麼才能規避JSON的JavaScript同源策略......並且可以用於XML數據嗎?
我有使用JSON和XML數據的JavaScript代碼。我知道我需要將JSON更改爲JSONP,因爲我的服務器位於不同的域,但是我只在客戶端執行此操作嗎?那麼XML數據呢?也可以以某種方式加載跨域?
最後,有沒有什麼好的網站深入解釋這個問題,舉個例子?
我對同一個原產地政策有疑問...我必須做些什麼才能規避JSON的JavaScript同源策略......並且可以用於XML數據嗎?
我有使用JSON和XML數據的JavaScript代碼。我知道我需要將JSON更改爲JSONP,因爲我的服務器位於不同的域,但是我只在客戶端執行此操作嗎?那麼XML數據呢?也可以以某種方式加載跨域?
最後,有沒有什麼好的網站深入解釋這個問題,舉個例子?
在您的jsonp響應中編碼您的XML,然後讓您的客戶端提取它並將其解釋爲XML。
您必須修改服務器。您可以使用JSONP的XML原理。你只需要傳遞一個字符串:
E.g.假設你的服務器端程序在/ xmlp。您傳遞callback
參數,然後腳本將XML輸出包裝在此中。
E.g.
/xmlp?callback=mycall
輸出:
mycall('<root><el attr="value"/ ></root>');
然後,解析在客戶端的XML(傳入一個JavaScript mycall
功能)。
只要數據源位於不同的域中,就必須使用JSONP來獲取數據。這是針對JSON和XML數據的。 JSONP只是一個註釋,它使您可以提供回調函數,只要遠程調用完成,它就會被調用。數據作爲回調參數提供。
事業,你的API必須儘快請求API包含「?回調= F」支持JSONP,它必須返回類似
{ f(data); }
和f - 是您的網頁上的某處定義的函數。
所以,基本上當API調用完成後,你調用了回調函數。
您有幾種選擇使用的API不同來源
參考:HTTP:// WWW。 west-wind.com/weblog/posts/107136.aspx。 – OnesimusUnbound 2010-12-22 03:47:01