JSON.stringify и JSON.parse не работают в IE9? - PullRequest
17 голосов
/ 22 августа 2011

Я использую JSON.Stringify и JSON.parse везде, и он отлично работает с Firefox. Он больше не работает с IE9 и не работает в IE8. Что я могу сделать?

Ответы [ 4 ]

35 голосов
/ 22 августа 2011

JSON.stringify начинается со строчной буквы s. stringify и parse доступны в IE8 + , , но только в стандартном режиме .

Добавьте ваш документ к <!DOCTYPE html>, если вы в настоящее время используете режим причуд. Кроме того, следите за использованием заглавных букв методов, которые вы вызываете, - все встроенные начинаются с символа нижнего регистра.

10 голосов
/ 22 августа 2011

почему вы хотите зависеть от того, есть ли в браузере объект, вместо этого просто включите файл сценария Дугласа Крокфорда ... Файл минифайда можно найти здесь: http://www.json.org/js.html

После импорта вам не нужно беспокоитьсяabt метод, существующий в браузере.

0 голосов
/ 21 июня 2015

проблема в том, что отправка заголовков UTF-8 сделает недействительным JSON (IE не нравится / не нравится). как описывается проблема, это может все еще применяться к IE9 ... однажды написал как , несколько лет назад. добавление поддержки JSON в браузер, который может анализировать собственный JSON, вероятно, не является оптимальным решением, поскольку оно приводит к ненужным накладным расходам - ​​только потому, что не удается доставить JSON в ожидаемом формате.

0 голосов
/ 20 июня 2015

В качестве альтернативы, в сценарии, где вам может понадобиться работать в строгом режиме по какой-либо причине (у меня есть другая библиотека, которая включает «использовать строгий»), вы можете посмотреть здесь: 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 (я полагаю, строгий режим использовался участвующей библиотекой). Это решило проблему для меня.

...