Задержка вызова Ajax - PullRequest
       5

Задержка вызова Ajax

1 голос
/ 17 декабря 2011

У меня есть следующий код jquery, который в основном действует как автозаполнение для ввода. Однако, когда пользователь вводит что-то довольно быстро (или в нормальном темпе для некоторых людей), выпадающий список мигает назад и вперед между различными автозаполнениями. Например, если я наберу «счастливый» очень быстро, он может поменяться между «счастливым» и «счастьем». Я думаю, что это вызвано задержкой между отправкой и получением данных. Любой способ исправить это?

var textvalue= $(this).val();
    $("#facebookDropdown").html("
    loading...
    ");
     $.ajax({
    type: "GET",
    url: "../invites/afterauth.php",
    data: "q=" + textvalue,
    success:
    function(msg){ 
    $("#facebookDropdown").html(msg)}   
    })

1 Ответ

0 голосов
/ 17 декабря 2011

Я бы отменил ваш предыдущий ajax-запрос для каждого отправленного вами. Таким образом, они не будут перешагивать друг друга. Другим вариантом является ожидание пары миллисекунд после каждого нажатия клавиши, чтобы увидеть, есть ли еще одно нажатие клавиши перед отправкой запроса ajax. Первый является более отзывчивым, но вызывает большую нагрузку на сервер, а второй - менее отзывчивым, но вызывает меньшую нагрузку на сервер. На самом деле вы можете сделать и то, и другое, если хотите.

if(previousRequest) {
  previousRequest.abort();
}

previousRequest = $.ajax(...

Больше информации здесь: Прервать Ajax-запросы, используя jQuery

...