Bizarre Javascript JSON неопределенная ошибка - PullRequest
4 голосов
/ 26 ноября 2009

У меня ошибка, из-за которой я нигде не смог найти упоминаний. Я разрабатываю веб-сервис WCF с поддержкой AJAX в ASP.NET. В моей главной страницы ASP.NET я включил файл json.js, скопированный только что с json.org. Когда я запускаю страницу, происходит сбой (VS 2008 перехватывает исключение Javascript) в первой строке кода в json.js (после множества комментариев), а именно:

JSON = JSON || {};

Ошибка говорит о том, что JSON не определен:

Ошибка времени выполнения Microsoft JScript: «JSON» не определен

Ну да! Вот почему строка проверяет, не определена ли она, и если да, то устанавливает пустой объект! Это должно быть неопределенным, верно? В последний раз я слышал, что в Javascript не было ошибки при выполнении такой операции с неопределенной переменной.

Может кто-нибудь подсказать мне, что здесь происходит? Я подозреваю, что что-то пошло не так в другом месте, что как-то вызывает эту проблему. У меня нет большого опыта работы с Javascript или ASP.NET, поэтому, возможно, я упускаю некоторые распространенные ошибки в настройке.

Ответы [ 7 ]

8 голосов
/ 28 апреля 2011

Я бы удостоверился, что ваша страница отображается в режиме стандартов IE8; Я обнаружил, что если документ отображается в режиме Quirks или IE7, this.JSON не определено.

Вы можете принудительно отобразить IE8 в режиме стандартов IE8, добавив на свою страницу следующий метатег:

<meta http-equiv="x-ua-compatible" content="IE=8" />
7 голосов
/ 26 ноября 2009

Вы должны использовать 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 = {};
}
1 голос
/ 22 января 2011

У меня была такая же проблема при попытке использовать гугл карты "streetview". Окно просмотра улиц станет полностью черным, и я получу значок в строке состояния, указывающий на ошибку. Я отключил DivX, как сделал webdev007, и проблема была решена! Вебдев, ты гений! Спасибо!

1 голос
/ 26 ноября 2009

вам, возможно, придется сделать var JSON = JSON || {}; Я столкнулся с подобными проблемами с Javascript в IE8.

1 голос
/ 26 ноября 2009

Как уже упоминалось, вы должны использовать json2.

Ошибка, однако, связана с обработкой глобальных переменных MS. Попробуйте window.JSON = window.JSON || {}; С этого момента JSON должен работать просто отлично.

0 голосов
/ 16 января 2011

Недавно я начал получать неопределенную ошибку JSON в JavaScript и обнаружил, что проблема связана с недавним добавлением DivX в IE. Добавление DivX также вызывало предупреждения о безопасном контенте на веб-страницах, на которых были все ссылки https, а не http (я установил для моего смешанного контента Display значение Prompt для исправления ссылок во время веб-разработки). После того, как я отключил добавление DivX, исчезла неопределенная ошибка JavaScript JSON, а также всплывающие окна с ошибочным предупреждением о безопасном содержимом.

0 голосов
/ 17 августа 2010

У меня та же ошибка, и я уже использовал json2;

Для меня это работает, когда я добавляю var перед выражением:

var JSON = JSON || {};
...