2

友人が現在取り組んでいるこの API から変数を出力しようとしています。API は完全にオープンであるため、認証は必要ありません。

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="http://profusum.se/js/jsonp.js"></script>
</head>
<body>
    <script>
        $.jsonp({
            url: "http://blackcab.didair.se/api/drivers",
            //callbackParameter: '',
            timeout: 45000,
            success: function (driversData, statusTwo) {
                $.each(driversData, function (i, data) {
                    var name = driversData.drivers[1].name;
                    document.write("<p> Namn: " + name);
                });
            },
        });
    </script>
</body>
</html>

しかし、Chrome Developer Tool を使用すると、次のエラーが発生します。

Uncaught SyntaxError: Unexpected token :                               drivers:1

なぜこのエラーが発生するのですか?

4

1 に答える 1

0

返されたデータが JSONP ではなく、変換できないことを jQuery で確認しました。

$.getJSON( "http://blackcab.didair.se/api/drivers?callback=?",
            //callbackParameter: '',
            function (data) {
            console.log("this is data:",data);
});

結果:

SyntaxError: invalid label
{"drivers":[{

サイトは JSONP ではなく JSON を返します。別のサイトが blackcab.didair.se に接続するには、blackcab.didair.se が JSONP を返すか、cors 応答ヘッダーを設定する必要があります (cors と同じオリジン ポリシーについてはウィキペディアを参照してください)。

現在、blackcab.didair.se は JSON を返していますが、これは JSONP とは異なります。

于 2013-04-07T14:53:23.887 に答える