私はどこでもJSON.Stringify
とJSON.parse
を使用しており、Firefoxで正常に動作します。 IE9では機能せず、IE8でも機能しません。私に何ができる?
オブジェクトを持っているブラウザに依存するのはなぜですか。代わりにDouglas Crockfordによるスクリプトファイルを含めます。最小化されたファイルはここにあります http://www.json.org/js.html =
インポートすると、ブラウザに存在するメソッドについて心配する必要はありません。
JSON.stringify
は小文字のs
で始まります。 stringify
とparse
はどちらも IE8 +で使用可能 、ですが、 標準モード。
文書の先頭に<!DOCTYPE html>
現在Quirksモードを使用している場合。また、呼び出すJavaScriptメソッドの大文字の使用にも注意してください。組み込みのメソッドはすべて小文字で始まります。
別の方法として、なんらかの理由で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でアプリケーションコードが機能しないことでした(参加しているライブラリで厳密モードが使用されていると思います)。これで問題は解決しました。
ただの問題は、UTF-8ヘッダーを送信するとJSONが無効になることです(IEはそれを好まない/好まなかった)。問題が説明されているように、それはまだIE9に当てはまるかもしれません...数年前に 方法 を書いたことがありました。ネイティブなJSONを解析できるブラウザにJSONサポートを追加することは、予期しない形式でJSONを配信できないためにのみ、無駄なオーバーヘッドが生じるため、おそらく最適なソリューションではありません。