Как уменьшить временную задержку XMLHttpRequest? - PullRequest
1 голос
/ 29 мая 2009

Я использую XMLHttpRequest в форме регистрации, чтобы проверить, было ли введенное имя пользователя уже занято. Сценарий работает нормально, но я замечаю, что при выполнении запроса возникает некоторая задержка - веб-страница останавливается на секунду после отправки запроса.

Есть ли способ получить запрос "в фоновом режиме" и не вызывать каких-либо задержек на переднем конце? Мне нравится реализация Твиттера: она показывает вращающиеся иконки песочных часов во время поиска в базе данных. Как мне получить что-то похожее?

Ответы [ 2 ]

7 голосов
/ 29 мая 2009

Вы хотите использовать асинхронный XHR - в настоящее время вы выполняете синхронный запрос, поэтому страница должна зависнуть до завершения загрузки. Асинхронный XHR вызывает функцию callbck, которую вы предоставляете с обновлениями состояния загрузки.

Если память служит, вам просто нужно сделать

 xhr.onreadystatechange = function() { 
     if (xhr.readyState === 4 && xhr.status === 200) loadFinished();
 }
 xhr.open(requestType, url,  true);

Где true делает запрос асинхронным.

1 голос
/ 29 мая 2009

Необходимо указать, что XMLHttpRequest работает асинхронно - в фоновом режиме. Затем вы можете предоставить функцию обратного вызова, чтобы пользователи могли продолжить просмотр до завершения операции.

Многие сайты просто показывают анимированный GIF в ожидании возврата операции, что, вероятно, создает у пользователя впечатление, что вы ищете, поскольку похоже, что что-то происходит. Вы можете легко спроектировать и загрузить один из этих вращающихся индикаторов AJAX на http://www.ajaxload.info/.

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