Получение ошибки времени выполнения в IE8 с использованием ext-js - PullRequest
0 голосов
/ 04 января 2012

Я получаю сообщение об ошибке в следующем коде, который отлично работает во всех браузерах, кроме IE8 (не проверяется с IE9):

doDecode = function(json){
            return eval("(" + json + ")"); //RunTime Error

Я получаю ошибку времени выполнения JavaScript, т. Е. "Синтаксическая ошибка".

Также во многих других строках я получаю различные ошибки времени выполнения, из-за которых мое приложение работает не так, как ожидалось. (Я использую ext-js 3.3.1) Пожалуйста, помогите мне решить эту проблему ... Спасибо в Adv ..

(Также хотел знать, совместим ли ext-js с IE8 ???)

Ответы [ 5 ]

1 голос
/ 04 января 2012

Существуют различные причины, по которым анализ JSON с помощью eval является плохим. Как отмечено на JSON.org :

Функция eval очень быстрая. Тем не менее, он может скомпилировать и выполнить любая программа на JavaScript, поэтому могут возникнуть проблемы с безопасностью. Использование eval указывается, когда источник является доверенным и компетентным. Это много безопаснее использовать парсер JSON. В веб-приложениях через XMLHttpRequest, общение разрешено только к тому же источнику, который обеспечивает страница, так что ей доверяют. Но это может быть не компетентно. Если сервер не является строгим в своей кодировке JSON, или если это не скрупулезно проверить все свои входные данные, тогда он может доставить недопустимый текст JSON это может быть опасный сценарий. Функция eval будет выполнить скрипт, раскрыв его злобу.

поэтому вы захотите использовать вместо этого анализатор JSON - опять же, JSON.org предоставляет его, а также в таких средах, как jQuery и extjs - смотрите этот вопрос SO для получения дополнительной информации (включая примеры ответы): Анализ простого JSON с использованием Ext дает SyntaxError: Неожиданный токен ILLEGAL

0 голосов
/ 06 января 2012

Иногда даже Ext.decode (json);не работает.Это потому, что мы не можем определить определенную ошибку в нашем коде, на которую умный браузер, такой как FF, не будет кричать.

В этом случае вы можете попробовать использовать Ext.data.JsonStore, напрямую связав вашу JSON-строкуit.

Здесь вы можете найти подходящий магазин http://docs.sencha.com/ext-js/3-4/#!/api/Ext.data.JsonStore

0 голосов
/ 05 января 2012

много возможных ошибок, одна из которых я столкнулся со структурой json, отправляемой с сервера, где есть ошибка, такая как избыток или недостаток "запятой", "{" "}" или "[" "]]«

0 голосов
/ 05 января 2012

Почему вы не используете парсер, доступный в ExtJS? В ExtJS 3 вы должны иметь возможность сделать что-то вроде этого:

jsonObject = Ext.decode(json);

Это сокращенный метод для метода decode в классе Ext.util.JSON. Метод также принимает другой логический параметр, чтобы гарантировать возврат null, если ваш json плохой.

0 голосов
/ 05 января 2012
doDecode = function(json){
            return eval ("(" + json + ')');  

Это сработало для меня ...

источник: ссылка

...