1

getJSONjqueryメソッドを使用して、パブリック API から JSON データを取得しようとしています。getJSONリクエストのコールバックが実行されると、次のエラーが発生し続けます。

警告:リソースはスクリプトとして解釈されますが、MIME タイプ text/html で転送されます

エラー: Uncaught SyntaxError: Unexpected token :

応答のヘッダーを調べたところ、確かに、に設定されていtext\htmlます。これは私が制御できない公開 API であるため、この JSON データを簡単に要求して解析するにはどうすればよいでしょうか?

参考までに、以下のリンクは私が取得しようとしている JSON データへのリンクです。

JSON リクエスト ( http://bitcoincharts.com/t/weighted_prices.json )

4

1 に答える 1

6

MIME タイプを制御できない場合は、jQuery.ajax代わりにjQuery.getJSON. 次に、成功のコールバックで、次のようなことができます。

jQuery.ajax({
    dataType: "text", //you may need this.
    success: function(data, textStatus, jqXHR) {
        var jsonData = JSON.parse(data);
        ....
    }
});

あなたが試すことができる別のことは次のとおりです。

jQuery.ajax({
    dataType: "json",
    success: function(data, textStatus, jqXHR) {
        //data here will be a JavaScript object
        ....
    }
});

MIME タイプが一致しない場合に jQuery が文句を言うかどうかはわかりませんが。しかし、それは一撃の価値があります。

編集:別のメモとして、スクリプトからそのデータにどのようにアクセスできますか? これはパブリック API ですが、別のサーバー上にあるため、同一生成元ポリシーに違反します。私が次のことをするとき:

jQuery.getJSON("http://bitcoincharts.com/t/weighted_prices.json", function(data) {
    console.log(data);
});

Chrome コンソールに次のエラーが表示されます。

XMLHttpRequest cannot load http://bitcoincharts.com/t/weighted_prices.json?_=1346263039525. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin.

BitCoin Charts が JSONP の代替をサポートしているかどうかを確認する必要があります。それ以外の場合、唯一のオプションは、サーバー側でこのデータを取得し、正しい MIME タイプを使用して JSON で返す何かをセットアップすることです。

于 2012-08-29T17:32:20.020 に答える