прекратить запуск вызовов AJAX - PullRequest
1 голос
/ 04 января 2011

У меня динамический поиск в php с помощью jquery.Когда я ввожу письмо, начинается вызов ajax.Моя проблема в том, что все вызовы ajax работают до конца, поэтому каждое письмо является полным вызовом.Когда пользователь вводит полное слово, то у меня есть неиспользованные запросы.Как я могу остановить неиспользованные звонки?

Большое спасибо

Ответы [ 6 ]

4 голосов
/ 04 января 2011

Используйте тайм-ауты, чтобы задержать запрос на несколько миллисекунд и очистить его при нажатии новой клавиши.

что-то вроде

var searchtimeout;
$('#search').keyup( function(){
  if (searchtimeout)
      {
        clearTimeout(searchtimeout);
      }
  searchtimeout = setTimeout(function(){
                                // initiate the ajax call here..
                             }, 300);
} );
1 голос
/ 04 января 2011

На этой странице есть много хороших ответов об этом, и принятый ответ даже содержит простой пример jQuery: Прервать запросы Ajax с использованием jQuery

1 голос
/ 04 января 2011

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

0 голосов
/ 04 января 2011

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

Я использовал его во многих проектах asp.net, и он довольно аккуратный .. docs.jquery.com/Plugins/autocomplete

0 голосов
/ 04 января 2011

Хорошо, вот мое решение:

if (searchtimeout)
        {
            clearTimeout(searchtimeout);
        }
        searchtimeout = setTimeout(function(){
            if(x){
                x.abort();
                alert("MACH WEG!");
            }
            x = $.post(url + "ajax.html?nsearch=1&ckey="+SID, {queryString: ""+inputString+""}, function(data) { // Do an AJAX call
                $('#suggestions').fadeIn(); // Show the suggestions box
                $('#suggestions').html(data); // Fill the suggestions box
                x = null;
            });
        }, 300);
0 голосов
/ 04 января 2011

Один из способов сделать это - отправить запрос, когда пользователь нажимает клавишу возврата, или хотя бы подождать несколько секунд (1-3), чтобы увидеть, прекратил ли пользователь набирать текст, а затем сделать запрос. необходимо выполнить поиск всех изменений в поле ввода.

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