![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| mgukov |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
При синхронном запросе в Firefox 3.6.10 не вызывается onreadystatechange. В IE, Chrome, Opera приведенный ниже фрагмент javascript работает.
Как в Firefox реализовать синхронный запрос? Вариант вроде этого :
Это сообщение отредактировал(а) mgukov - 2.10.2010, 17:25 |
||||
|
|||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
||||
|
||||
| mgukov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
В этом случае функция do_something() будет вызвана еще до того как будет отправлен запрос? Не понимаю, объясните пожалуйста Это сообщение отредактировал(а) mgukov - 2.10.2010, 17:55 |
|||
|
||||
| Amphiluke |
|
||||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Да не в этом случае, а вот в вашем первом случае:
Потому что вы не проверяете значение свойства readyState. До того как будет отправлен запрос, событие onreadystatechange оповестит о вызове метода open (readyState=1), затем о вызове метода send (readyState=2), затем о частичном принятии данных запроса (readyState=3) и лишь потом уже об окончательном получении ответа (readyState=4). И всякий раз будет вызываться ваша do_something(). Но речь прежде всего о том, почему вас не устраивает второй вариант. Это сообщение отредактировал(а) Amphiluke - 2.10.2010, 18:00 |
||||
|
|||||
| mgukov |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
Не устраивает потому что в IE, Chrome, Opera первый вариант работает.
Допустим я создал объект XMLHttpRequest и использую его многократно. Сначала использую его для асинхронного запроса.
Далее, для синхронного запроса.
Так если я забыл добавить
Да и первый вариант удобнее |
||||||
|
|||||||
| Amphiluke |
|
||||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Прежде всего, обратите внимание на то, что сами разработчики FF пишут об использовании атрибута onreadystatechange для синхронных запросов:
Так что на поддержку ожидаемого вами поведения этого браузера при синхронном запросе лучше не надеяться, а писать собственный код, в котором предусмотреть все возможности. Добавлено @ 18:40 Если вы хототе использовать код многократно для отправки как синхронных, так и асинхронных запросов, то и передавайте в функцию логический параметр, определяющий режим передачи:
Это сообщение отредактировал(а) Amphiluke - 2.10.2010, 18:41 |
||||
|
|||||
| mgukov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
Согласен, большое спасибо за ответы
|
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |