嘗試我的控制檯上,我得到如下:
[Error] XMLHttpRequest cannot load http://api.bandsintown.com/artists/weezer/events.json. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
這個「問題」叫做十字架-Origin資源共享(又名。 CORS):
本文檔定義了一種機制,以使客戶端跨來源請求。使API能夠對資源進行跨源請求的規範可以使用本規範定義的算法。如果在example.org資源上使用這樣的API,則hello-world.example.org上的資源可以選擇使用本規範描述的機制(例如,指定Access-Control-Allow-Origin:example.org作爲響應頭),這將允許從example.org跨源訪問該資源。
這是一種安全機制,默認情況下,瀏覽器和服務器在跨站點檢索數據時適用。的CORS的W3C推薦說,服務器必須實現的頭訪問控制允許來源,無論是指定服務器所允許,還是讓大家來從它的數據(使用通配符*):
用戶代理通常對網絡請求應用同源限制。這些限制可防止從一個來源運行的客戶端Web應用程序獲取從另一個來源檢索到的數據,還會限制不安全的HTTP請求,這些請求可以自動啓動到與正在運行的應用程序的來源不同的目標。
但是,這隻適用於用戶代理(主要是瀏覽器)。因此,試圖通過Ruby來獲取數據,例如,因此得到它:
require 'open-uri'
open("http://api.bandsintown.com/artists/weezer/events.json"){|f| f.read()}
這將返回一個包含JSON字符串。
關於JSONP:您將無法使用它,以及 - 服務器必須返回一個回調函數裏面的JSON數據:
my_callback([{"valid_json":"no!"},{"valid_javascript":"yes!"}])
這將是完成(如果支持的話)通過腳本標籤:
<script type="text/javascript" src="http://api.bandsintown.com/artists/weezer/events.json?jsonp=my_callback"></script>
來源:W3C
您是否嘗試過' 「http://api.bandsintown.com/artists/weezer/events.json」'呢? –
瀏覽器控制檯中的任何錯誤? – Curt
是的我沒有運氣嘗試與http前面的網址。我的瀏覽器控制檯中沒有出現錯誤。我還有其他幾個getJson函數,我從Freebase,Facebook和Youtube中抽取了一些東西,沒有任何問題。 –