web-dev-qa-db-ja.com

JSON.stringifyとJSON.parseがIE9で機能しない?

私はどこでもJSON.StringifyJSON.parseを使用しており、Firefoxで正常に動作します。 IE9では機能せず、IE8でも機能しません。私に何ができる?

17
saurabh ranu

オブジェクトを持っているブラウザに依存するのはなぜですか。代わりにDouglas Crockfordによるスクリプトファイルを含めます。最小化されたファイルはここにあります http://www.json.org/js.html =

インポートすると、ブラウザに存在するメソッドについて心配する必要はありません。

10
Baz1nga

JSON.stringify は小文字のsで始まります。 stringifyparseはどちらも IE8 +で使用可能ですが、 標準モード

文書の先頭に<!DOCTYPE html>現在Quirksモードを使用している場合。また、呼び出すJavaScriptメソッドの大文字の使用にも注意してください。組み込みのメソッドはすべて小文字で始まります。

35
phihag

別の方法として、なんらかの理由でstrictモードで実行する必要があるシナリオ(「use strict」を含む別のライブラリがあります)では、こちらをご覧ください https://github.com/douglascrockford/JSON-js 。これを変更して、JSONが未定義かどうかを最初にチェックし、次の場合にのみ関数JSON.parseを生成します。

if (typeof JSON === "undefined") {
    var JSON = {
        parse: <insert value of json_parse from library here>
    };
}

私の問題は、IE9でアプリケーションコードが機能しないことでした(参加しているライブラリで厳密モードが使用されていると思います)。これで問題は解決しました。

0
uch

ただの問題は、UTF-8ヘッダーを送信するとJSONが無効になることです(IEはそれを好まない/好まなかった)。問題が説明されているように、それはまだIE9に当てはまるかもしれません...数年前に 方法 を書いたことがありました。ネイティブなJSONを解析できるブラウザにJSONサポートを追加することは、予期しない形式でJSONを配信できないためにのみ、無駄なオーバーヘッドが生じるため、おそらく最適なソリューションではありません。

0
Martin Zeitler