javascript
JSONProxy - 获取跨域json数据工具
JSONProxy是一款很好的獲取json數據的代理網站,“Enables cross-domain requests to?any?JSON API”。當你苦于無法跨域獲取json數據時,不妨一試,說不定能事半功倍。
比如這位朋友,想通過ajax獲取必應的每日一圖的url(是否可以通過ajax獲取“Bing每日一圖”?)很顯然,這個ajax是跨域的,直接獲取會因為跨域報錯;服務端也肯定不會有對你本地localhost的“Access-Control-Allow-Origin”的設置,所以CORS策略也是不行的;因為是個json數據,沒有方法名包裹,所以jsonp也是不行。樓主暫時還沒接觸過其他的跨域方法,如果要我去獲取url,只能通過服務端的代碼,服務端去獲取json數據,然后index頁面去ajax請求服務端獲取的json數據(此時index頁面和服務端同源),代碼量增加,而要做的僅僅只是獲取一個json數據啊!這時JSONProxy就幫你做好了服務端的工作,是不是很爽!
Easy: JSONP
原生的JavaScript:
<script>function myCallback(data){console.log(data);} </script> <script src="https://jsonp.afeld.me/?callback=myCallback&url=http://jsonview.com/example.json"></script>myCallback函數里的data就是返回的json數據了。很顯然,服務器會幫你去請求你需要的json數據,然后包裹在你設置的回調函數名中,這時要注意的代碼中的紅色兩處要保持一致,url后跟的就是需要的json數據地址。
當然JQuery封裝好的方法更加簡單:
<script>$.getJSON('https://jsonp.afeld.me/?callback=?&url=http://jsonview.com/example.json', function(data){console.log(data);}); </script>Easier: Cross-domain AJAX (CORS)
比jsonp更簡單的方法是CORS(好吧,也沒簡單到哪去啊...)
<script>$.get('https://jsonp.afeld.me/?url=http://jsonview.com/example.json', function(data){console.log(data);}); </script>這回是真正地發送了ajax請求了,為什么跨域了還能請求?因為服務端設置好了。
而請求的json數據也是服務端幫你獲取的。也就是說,客戶端發送請求,服務端解析請求的url,然后服務器作為代理發送http請求去請求json數據(這時不存在客戶端跨域),再返回給客戶端作為回調的參數。
Easiest: jQuery Plugin
最簡單的,我怎么感覺越來越復雜了...
略...
總結,因為要用第三方的服務器,所以既耗時又有不確定因素(比如服務器掛了),不合適用在真正項目中,自己玩玩尚可。
總結
以上是生活随笔為你收集整理的JSONProxy - 获取跨域json数据工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux内核社区是数字军火商、斯拉夫兵
- 下一篇: 双向一对多的删除