Ошибка JavaScript: «Sys не определен» - PullRequest
1 голос
/ 19 марта 2010

У меня постоянно возникает ошибка при запуске моего веб-приложения. Ошибка не приводит к ошибке компиляции, когда на работающем сервере по крайней мере ошибка javascript и больше ничего. Но настоящая проблема заключается в том, что «debug» ... ошибка javascript останавливает компиляцию, и мне приходится трижды «Continue», прежде чем продолжить мою отладку. Но эта ошибка возникает при каждом обновлении страницы. Все это с помощью Visual Studio.

После нескольких часов поиска в Google я обнаружил, что это проблема с ScriptManager и Ajax. Реальная проблема в том, что я не использую Ajax на этой странице, но ScriptManager находится на главной странице. Что еще хуже, на любой другой странице сайта, которая может использовать Ajax или нет, нет ошибок javascript! Только ЭТА страница вызывает эту ошибку! Любое предложение?

Обратите внимание, что я обычно говорю по-французски, так что, вероятно, есть ошибка и извините за это!

EDIT

Там 3 места были остановки компиляции.

1. Sys.WebForms.PageRequestManager._initialize('ctl00$ctl08', document.getElementById('aspnetForm')); 

2. Sys.WebForms.PageRequestManager.getInstance()._updateControls([], [], [], 90);

3. Sys.Application.initialize();

Ответы [ 2 ]

4 голосов
/ 19 марта 2010

Убедитесь, что вы включили элемент управления диспетчера сценариев asp.net-ajax на своих страницах.


Обновление:

Из комментария:

Но ОДНА страница, которая не использует Ajax или что-либо относительное к скрипт-менеджеру, вызывает эту ошибку.

Неправильно. Элемент управления scriptmanager заставляет включать javascript (<link ..> -ed) в отображаемую html-страницу. Без этого элемента управления scriptmanager этот javascript будет недоступен. Среди связанных javascript есть объект Sys, на который жалуется ваша ошибка. только способ, которым вы получаете ошибку Sys is undefined, - это если у вас есть javascript для вашей страницы, который каким-то образом пытается использовать объект Sys (возможно, через элемент управления третьей части?). Поэтому я обещаю вам, что вы используете "Ajax или [что-то связанное]".

Однако вы сказали, что включили менеджер сценариев на своей главной странице, и этого должно быть достаточно. Наиболее распространенные причины этого - отсутствие элемента управления scriptmanager или выполнение javascript, в котором он необходим, до его импорта механизмом javascript. Так что проверьте еще раз и убедитесь, что 1) , что рассматриваемая страница не является чем-то "особенным" в том смысле, что она не использует главную страницу, и 2) , что вы не javascript не должен быть запущен до импорта ajax-скриптов asp.net.

1 голос
/ 19 марта 2010

Это не ответ на ваш вопрос, а скорее предложение на будущее. Я думаю, что Джоэл все равно отлично ответил на вопрос.

Ради вашего здравого смысла, избавьтесь от этого Microsoft AJAX. Это дерьмо и это не настоящий AJAX в любом случае, потому что вы все равно отправляете обратно всю страницу. Это просто асинхронно.

Эти бессмысленные и ненужные ошибки "Sys is undefined" являются одной из причин, по которой я отказался от Microsoft AJAX.

Переходите к jQuery и MVC. Это делает развитие снова веселым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...