簡體   English   中英

getJson問題返回數組

[英]getJson problems returning array

我正在嘗試解析JSON文件中的一些數據。 有問題的JSON文件可以在這里看到: http//api.bandsintown.com/artists/weezer/events.json

我使用jQuery來檢索帶有$.getJSON函數的JSON文件,但是當我嘗試附加數據或嘗試在警告框中顯示它時沒有任何反應。

碼:

$.getJSON("api.bandsintown.com/artists/weezer/events.json", function(result) {

    $.each(result, function(key, val) {
        alert(key + val);
    });

});

我使用了幾種方法但似乎無法找到問題。

看起來您正在使用AJAX進行跨域請求。 所以它不起作用。

試試jsonp:

$.getJSON("http://api.bandsintown.com/artists/weezer/events.json?callback=? 
&app_id=ramesh", function(result) {

    $.each(result, function(key, val) {
      alert(key + val);
    }); 

});

工作小提琴: http//jsfiddle.net/WtaPu/1/

app_id是通過http://www.bandsintown.com/api/authentication發送的

使用卷曲

$to=curl_init('http://api.bandsintown.com/artists/weezer/events.json');

curl_setopt( $to, CURLOPT_POST, true );
curl_setopt( $to, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $to, CURLOPT_POSTFIELDS, $post );
curl_setopt( $to, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec( $to);// final result

無論何時在AJAX中執行跨瀏覽器請求,您都需要使用JSONP: http//api.jquery.com/jQuery.getJSON/

試試我的控制台,我得到以下內容:

[Error] XMLHttpRequest cannot load http://api.bandsintown.com/artists/weezer/events.json. Origin http://localhost is not allowed by Access-Control-Allow-Origin. 

這個“問題”被稱為跨源資源共享 (又名CORS ):

本文檔定義了一種啟用客戶端跨源請求的機制。 使API能夠對資源進行跨源請求的規范可以使用本規范定義的算法。 如果在example.org資源上使用此類API,則hello-world.example.org上的資源可以使用此規范描述的機制(例如,將Access-Control-Allow-Origin:example.org指定為響應頭) ),這將允許從example.org獲取該資源的跨源。

這是一種安全機制,默認情況下,瀏覽器和服務器在跨站點檢索數據時適用。 CORSW3C建議說服務器必須實現標頭Access-Control-Allow-Origin,要么將服務器指定為允許,要么允許每個人從中獲取數據(使用通配符*):

用戶代理通常將同源限制應用於網絡請求。 這些限制阻止從一個源運行的客戶端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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM