-1

一部の JSON データで奇妙な問題が発生しています。

{
    "title" : "Counties",
    "data": [
        {
            "Name": "Baker",
            "latlng": [
                "44.65488,-118.42475",
                "44.64548,-118.38275",
                "44.62488,-118.34425",
                "0,0",
                "1,0"
            ]
        }
    ]
}

このデータを含むファイルに .getJSON を使用すると、構文エラーが発生しますが、latlng 配列から最後の 2 つのエントリを取り出すと、正しく機能します。

JSON を jsonlint.com のリンターに渡すと、有効な JSON であると表示されますが、何らかの理由で chrome と firefox で解析できません。

json ファイルを取得するコード:

$(function() {
    $.getJSON("json/counties.json", function(data){
        console.log(data);
    });

    $(document).ajaxError(function(event, jqxhr, settings, exception){
        console.log(exception);
    });
});

Chrome からログに記録される例外

SyntaxError {} 

そして、Firefox からログに記録された例外

[15:07:33.965] (new SyntaxError("JSON.parse: unexpected non-whitespace character after JSON data", "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js", 3))

私が知る限り、データの JSON の後に文字はありません。スクリーン ショットを次に示します。

スクリーンショット

4

1 に答える 1

0

あなたのコードはすべて私にとってはうまく機能しており、あなたが示しているデータは問題ないので、あなたの環境で何か奇妙なことが起こっているに違いありません.

最初にお勧めするのは、Fiddler またはブラウザーのネットワーク タブで生の HTTP 応答を監視し、そこに予期しないものがあるかどうかを確認することです。プロキシ サーバーがデータにガベージを追加しているなどの可能性があります。

そうでない場合は、ファイルをバイナリ エディターで開いてみてcounties.json、そこに予期しないバイトがないか探してください。これはあなたの例ではすべて ASCII であるため、属していない文字を見つけるのは非常に簡単です。

于 2013-08-12T20:31:44.137 に答える