Вопрос

Я обнаружил ошибку, которую нигде не смог найти нигде. Я разрабатываю веб-сервис 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 || {};
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top