1

この JSON フィードにアクセスして、ラジオ ステーションで現在再生中の曲であるフィードの最後の項目を取得しようとしています。これにより、それをストリーム プレーヤー Web アプリにプッシュできます。

function getSongData(){
    $.ajax({
        url: 'http://cjzn.streamon.fm/metadata/recentevents/CJZN-48k.json',
        dataType: 'jsonp',
        success: function(data) {
            var totalItems = data.length;
            alert('Current song: ' + data[totalItems].TIT2);
        },
        error: function() {
                alert('Unable to retrieve data');
        }
    });
}

ご覧のとおりdata.length、アイテムの総数を取得するために使用しています。これは、その数がフィード内の最後のアイテムでもあることを意味します。私が得ることができるのはエラーメッセージだけです!ドメインにデータを取得するにはJSONPを使用する必要があることは理解していますが、JSONPがサポートされているかどうかは正直わかりません。その場合、他にどのようにフィード データを取得できますか?

4

2 に答える 2

5

あなたがすべき。

変化する

data[totalItems].TIT2

data[totalItems-1].TIT2

配列のインデックスは 0 から始まるため、最後の項目に対して length-1 を実行する必要があります。有効data[totalItems]にアクセスすると範囲外になり、エラーが発生します。undefined.TIT2

この API は JSONP をサポートしていないようです。jquery で ajax を起動すると、jsonp コールバックの URL にコールバック文字列が追加されます。

例: http://cjzn.streamon.fm/metadata/recentevents/CJZN-48k.json?callback=jQuery19105709207213949412_1373047199605&_=1373047199606

ただし、応答はコールバック名で関数にラップされません。理想的には、応答は次のようになります。

jQuery19105709207213949412_1373047199605(jsonData);

しかしそうではなく、json の応答をそのまま返すだけです。

于 2013-07-05T17:43:59.230 に答える
1

コメントで述べたように、このフィードは JSONP をサポートしていませんでした。そのため、StreamON フィードから直接取得する代わりに、次のようにしてそのフィード データを自分のサーバーに書き込み、フィードを効果的にコピーしました。

file_put_contents("playlist.json", fopen("http://cjzn.streamon.fm/metadata/recentevents/CJZN-48k.json", 'r'));

playlist.jsonは私のサーバー上にあり、JSON を使用してそこから取得できます。外部フィードをサーバーに定期的に書き込むだけです。

フィードの最後の項目を取得する際の問題と、インデックスが 1 ではなく 0 から始まるため1引くを忘れていることについて、コメント投稿者にも感謝の意を表します。みんなありがとう!

于 2013-07-05T18:25:37.423 に答える