該代碼的外觀如何?是否可以使用javascript從其他域/服務器下載JSON對象?
3
A
回答
5
其他域/服務器需要支持JSONP,基本上包裝了JSON的回調。
在jQuery中,呼叫是這樣的:
$.getJSON(
'http://otherdomain.com/api/whatever?callback=?',
{ key: 'value', otherkey: true },
function(data){
//handle response
}
);
來自其他服務器的實際響應(如果你看實際發送的是什麼)是這樣的:
// With this url:
http://domain.com/api/method?callback=the_callback_function_name
// The response would look like this:
the_callback_function_name({ "json": "data here"});
當您提供額外的callback=?
時,jQuery getJSON方法會自動處理JSONP。請記住一些使用不同名稱的網站,例如json_callback=?
。最重要的是,你把它作爲URL的一部分,不要嘗試添加callback: '?'
到getJSON
功能的data
一部分。
1
您可以使用JSONP。 jQuery中,嘗試的getJSON:http://api.jquery.com/jQuery.getJSON/
4
只有通過JSONP。無論你使用jQuery或其他一些框架,它歸結爲這樣一個腳本塊:
<script type="text/javascript" src="http://path.to/your/javascript"></script>
的<script>
塊是從跨域限制的免疫。需要注意的是該服務也應該支持JSONP。如果腳本返回像這樣的JSON對象:
{a: 0, b: 1}
該對象將被評估,但沒有任何反應。但JSONP服務接受一個回調函數的名字是這樣的
<script type="text/javascript" src="http://path.to/your/javascript?callback=yourCallbackFunction"></script>
和包裝數據作爲參數傳遞給你的回調是這樣的:
yourCallbackFunction({a: 0, b: 1});
這樣當腳本被評爲函數被調用。
0
相反,你應該使用本地代理。設置一個asp.net/php頁面,該頁面將加載後端的遠程頁面,然後使用ajax加載代理頁面。
相關問題
- 1. 是否有可能使用JavaScript下載文件到服務器
- 2. 我可以使用來自其他域的teamfoundation服務器嗎?
- 3. 用其他服務器下載文件
- 4. 的XmlHttpRequest - 可以從其他域讀JSON?
- 5. 是否可以使用Google Home上鍊接的其他服務?
- 6. 是否有可能使用@RequestParam從JSON轉換爲域對象
- 7. 是否可以從其他設備訪問AIDL服務?
- 8. 是否可以從Google Drive上傳到其他網絡服務?
- 9. Firebase對象是否可以指向其他Firebase對象
- 10. 是否可以使用JSON.NET從JSON對象中刪除JSON對象?
- 11. 是否可以在從其他服務器下載文件之前動態壓縮文件?
- 12. 其他Web服務 - 對象映射器
- 13. 是否有可能從其他服務器承載wordpress數據庫
- 14. 是否可以在Web服務中使用對象?
- 15. 是否可以使用XAML複製其他圖像的區域?
- 16. findOrCreateBy是否可以與其他域實例一起使用?
- 17. 從其他服務器使用memcache
- 18. PLV8是否支持對其他服務器進行http調用?
- 19. 是否可以在樂器中加載其他應用程序?
- 20. 是否可以使用File JavaScript API加載服務器端文件?
- 21. SignalR是否可以將活動連接重用到服務器其他用戶
- 22. 是否可以在不使用JavaScript的情況下進行服務器推送?
- 23. 如何在服務器上從其他服務器下載PDF文件php
- 24. 是否可以使用服務器進行XMPP對等連接?
- 25. 是否可以從2個服務器加載Wordpress網站?
- 26. 使用Cookie從服務器使用其他Web服務
- 27. 我可以在主域託管服務器以外的其他服務器上託管子域嗎?
- 28. django服務器可以向其他服務器發送請求
- 29. 如何從正在從其他服務器下載文件的服務器下載文件?
- 30. 是否可以使用Node.js或其他服務器端JavaScript方法開發Google App Engine Web應用程序?
據我只是跑測試,FF2,IE6和IE8(全部使用默認安全設置)阻止,因爲同源策略的方法。 FF3.5和Safari4.0沒有。 IE給了「權限被拒絕」的錯誤信息。 FF2提供了我在本頁其他地方引用的錯誤消息。 – 2010-02-01 20:32:05
@fsb然後你運行了一個不正確的測試。不好意思,但是JSONP在任何瀏覽器中都沒有被封鎖,可以說任何市場份額。 – 2010-02-01 22:03:28
@fsb使用您的默認安全設置,運行以下頁面:http://jsbin.com/olixe。它將在FF2 +,Safari 3+和IE6 +中工作 - 沒有錯誤或限制。 – 2010-02-01 22:14:48