Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FF: "Component returned failure code: 0x80040111"в, контексте чтения поля status из ajaxObj 
V
    Опции темы
Royan
  Дата 18.2.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 1
Всего: 15



Я знаю, что тема поднималась, но вопрос все-таки остался. Вопрос в том, выяснил ли все-таки кто-нибудь что это за баг, почему он происходит время от времени и как с ним бороться кроме как делать синхронный запрос?

Я так понял что баг не проявляется в следующей ситуации:

Код

xmlHttp.onreadystatechange=function() {
if(xmlHttp.readyState==4)  {
     // code
  }
}


И проявляется в 

Код

xmlHttp.onreadystatechange=function() {
if(xmlHttp.readyState==4)  {
     if(xmlHttp.status!=200)  {
        //code
     } 
  }
}


То есть когда читается поле status. Почему я так уверен? Потому что в моем случае баг появляется как раз на строчке, где идет чтение из поля статус.

Хотел бы выслушать мнения, заранее благодарю.

Это сообщение отредактировал(а) Royan - 19.2.2008, 12:33


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Sardar
Дата 18.2.2008, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Возможно из-за опечатки xmlHttp, возможно ислючение, что там подымается так оригинально ловиться лисой из обработчика onreadystatechange.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Royan
Дата 19.2.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 1
Всего: 15



Sardar, 
Это действительно опечатка. Но ты же сам выдвигал идеи в свое время по этому поводу: http://forum.vingrad.ru/index.php?showtopi...t&p=1122100

Короче суть в том, что даже в случае асинхронного режима объект xmlHttp сохраняется где-то в недрах браузера иначе невозможно было бы проверить даже "readyState". Суть в том, что проблема выскакивает только при чтении поля статус



--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Sardar
Дата 19.2.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Так, согласно спекам, браузер обязан поднять INVALID_STATE_ERR если статус-код не был получен (оборвали соединение, совсем галимый ответ от сервера и т.п.). Мозилла действительно точно следует этому предписанию и кидает NS_ERROR_NOT_AVAILABLE (0х80040111).

Вывод: всегда нужно оборачивать обращение к .status (и не только) в try/catch блок. По исключению можно понять:
  • юзер остановил запрос
  • сервер не доступен/не найден
  • сервер не отослал валидный HTTP ответ (закрыл соединение без ответа, отослал лажу и т.п.)
  • старница начала перезагружаться раньше, чем ajax запрос успел прийти, т.е. запрос автоматически убивается с выходом .readyState=4 (к примеру запрос и сразу submit формы. не используй input:submit!)
  • и ещё тонна различных ситуаций

При исключении считаем что запрос не успел дойти до сервера, тихо материмся и донимаем пользователя алертами smile

Чтиво: спека, описание, частый пример с input:submit.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Royan
Дата 19.2.2008, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 1
Всего: 15



Ясно спасибо!


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.