Bizarre Javascript JSON неопределенная ошибка
-
05-07-2019 - |
Вопрос
Я обнаружил ошибку, которую нигде не смог найти нигде. Я разрабатываю веб-сервис WCF с поддержкой AJAX в ASP.NET. В моей главной странице ASP.NET & Lt; asp: ScriptManager & Gt; я включил файл json.js, скопированный только что с json.org. Когда я запускаю страницу, происходит сбой (VS 2008 перехватывает исключение Javascript) в первой строке кода в json.js (после множества комментариев), а именно:
JSON = JSON || {};
Ошибка говорит о том, что JSON не определен:
Ошибка времени выполнения Microsoft JScript: «JSON» не определен
Ну да! Вот почему строка проверяет, не определена ли она, и если да, то устанавливает пустой объект! Это должно быть неопределенным, верно? В последний раз я слышал, что в Javascript не было ошибки при выполнении такой операции с неопределенной переменной.
Кто-нибудь может подсказать мне, что здесь происходит? Я подозреваю, что что-то пошло не так в другом месте, что как-то вызывает эту проблему. У меня нет глубокого опыта работы с Javascript или ASP.NET, поэтому, возможно, мне не хватает некоторых распространенных ошибок в настройке.
Решение
Вы должны использовать json2.js . Оскорбительная строка была изменена:
// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.
if (!this.JSON) {
this.JSON = {};
}
Другие советы
Я бы позаботился о том, чтобы ваша страница отображалась в режиме стандартов IE8; Я обнаружил, что если документ отображается в режиме Quirks или IE7, this.JSON
не определено.
Вы можете заставить IE8 выполнять рендеринг в режиме стандартов IE8, добавив на свою страницу следующий метатег:
<meta http-equiv="x-ua-compatible" content="IE=8" />
Как уже упоминалось, вы должны использовать json2.
Ошибка, однако, связана с обработкой глобальных переменных в MS. Попробуйте window.JSON = window.JSON || {}; С этого момента JSON должен работать просто отлично.
возможно, вам придется сделать var JSON = JSON || {};
Я столкнулся с подобными проблемами с Javascript в IE8.
У меня возникла та же проблема при попытке использовать карты Google " streetview " ;. Окно просмотра улиц станет полностью черным, и я получу значок в строке состояния, указывающий на ошибку. Я отключил DivX, как сделал webdev007, и проблема была решена! Вебдев, ты гений! Спасибо! Р>
Недавно я начал получать неопределенную ошибку JSON в JavaScript и обнаружил, что проблема связана с недавним добавлением DivX в IE. Добавление DivX также вызывало предупреждения о безопасном контенте на веб-страницах, на которых были все ссылки https, а не http (я установил для моего смешанного контента Display значение Prompt для исправления ссылок во время веб-разработки). После того, как я отключил добавление DivX, исчезла неопределенная ошибка JavaScript JSON, а также всплывающие окна с ошибочными предупреждениями о безопасном содержимом.
У меня та же ошибка, и я уже использовал json2; Р>
Для меня это работает, когда я добавляю var
перед выражением:
var JSON = JSON || {};