-1

私は2つの異なるアプローチを試みています。1 つは Firefox でのみ動作し、もう 1 つは Safari で動作しますが、どちらも両方では動作しません。Firefoxで動作するものは次のとおりです。

 var json = JSON.parse(data);
 var results = json.query.results.quote;

Safariで動作するもの

 var results = data.query.results.quote;

data は、サーバーから返される JSON です。これらのうちの 1 つは JSON を解析する適切な方法であり、ブラウザの互換性のための最良の方法は何ですか?

編集: を使用して Safari でデバッグするとJSON.parse、エラーが発生します:Unexpected identifier "object"

4

2 に答える 2

2

jQuery を使用してこの JSON データを取得している場合は、解析について心配する必要はありません。jQuery はそれを行うことができます (場合によっては行います)。

あなたの問題は、(おそらく)すでに解析されていることです。サーバーがヘッダーを返す場合Content-type: application/json、jQuery がそれを解析します。のような別のヘッダーを返す場合、text/htmlJSON として解析されません。変数に何が含まれているかが不明であることは決して良いことではありません。

常に JSON として解析するよう jQuery に指示するには、dataType: 'json'. これにより、コールバック内のデータが常にオブジェクトになります。

$.ajax({
    url: 'file.php',
    dataType: 'json',
    success: function(data){
        var results = data.query.results.quote;
    }
});
于 2013-05-07T20:20:15.883 に答える
1

Douglas Crockford による JSON の公式実装を使用できます。こちらから入手できます。主要なライブラリは、JSON 機能を確実に追加します。JSON のネイティブ実装が既存のブラウザー内で使用可能かどうかを確認することも非常に簡単です。

JSON ライブラリはすでにそれを行っています。JSON.parseブラウザがすでに実装されているかどうかを確認しますJSON.stringify。もしそうなら、それは何も上書きしません。そうでない場合は、必要な機能が提供されます。

于 2013-05-07T19:50:08.557 に答える