Калитка: одновременные запросы Ajax ограничены одним? - PullRequest
6 голосов
/ 02 мая 2011

Ситуация

В моем приложении Wicket есть страница, содержащая два тега.Каждый раз, когда вкладка выбрана, ее содержимое выбирается с помощью Ajax, поэтому каждый раз, когда вы переключаетесь на другую вкладку, ее содержимое загружается свежим с сервера.

На одной из вкладок у меня есть поле ввода, которое имеетсобытие onblur, которое сохраняет содержимое поля через Ajax.

Задача

Если фокус находится на поле ввода, и я щелкаю пустую область страницы, запрос Ajax сработал и данные сохранены.

Если вместо щелчка по пустой области страницы я нажимаю на другую вкладку, запрос Ajax о сохранении поля ввода запускается, но неЗапрос Ajax для переключения вкладок.

Ограничено ли количество одновременных запросов Ajax в Wicket одним?

Ответы [ 3 ]

9 голосов
/ 02 мая 2011

Да, количество одновременных запросов к экземпляру страницы ограничено одним.Wicket Ajax будет ставить в очередь последующие запросы Ajax на клиентском канале.Для получения подробной информации о запущенном приложении см. Отладчик Ajax wicket.

Это сделано для того, чтобы упростить создание приложения: не нужно обходить проблемы параллелизма на сервере.Доступ к странице всегда осуществляется из одного потока: текущего активного потока запроса.Если бы мы этого не делали, нам пришлось бы синхронизироваться по дереву компонентов и заставить всю модель программирования перейти на юк.

4 голосов
/ 03 мая 2011

Проблема заключалась в том, что наш AjaxIndicator накладывал DIV на всю страницу в течение каждого запроса Ajax. События «mouseup» (и, следовательно, «click») появились, когда наложение было на месте, и, таким образом, потерялись. Удерживая кнопку мыши и отпуская ее после того, как первый запрос Ajax завершился, и наложив DIV, удалили второй запрос Ajax.

Теперь кажется очевидным, что единственная причина, по которой у нас есть такое наложение, состоит в том, чтобы запретить пользователям щелкать во время выполнения запроса Ajax.

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

0 голосов
/ 02 мая 2011

Может быть, ответ на запрос ajax onblur может иметь ошибку, или процесс, который вы выполняете после ответа ajax, может иметь ошибку.

Если возможно, можете вставить фрагмент кода.

...