2010-12-27 3 views
1

Я использую слегка модифицированный плагин для автозаполнения jQuery,Отключить запрос AJAX до завершения?

Он просто изменен для извлечения объекта JSON из базы данных MySQL вместо некоторого массива.

Однако я заметил, что после нажатия поля ввода он отправит новый запрос, такой же, как и предыдущий. И если я снова щелкнул по другому, и многие быстрые клики быстро начали формировать ужасную проблему. . Ничто не мешает ему отправлять неограниченное количество запросов в секунду.

SO, так как я отправляю запрос в определенное место, и это место должно никогда не обрабатывать один и тот же запрос дважды, как я могу остановить его от отправки нового запроса, если поле ввода содержит ту же строку, что и последний запрос?

И это, где я получил модифицированный плагин от:

http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

+0

«По щелчку» !! можете ли вы показать нам какой-то код? вы прикрепляете ajax к событию 'Click' в поле ввода вместо этого на мероприятии' change' ?! также почему использовать устаревший плагин? – ifaour

ответ

1

Вы должны поместить мьютекс semphore в, только флаг, который знает, является ли запрос активно продолжается, так что вместо запуска нового запроса вы проверяете, есть ли активный запрос, и продолжайте, если нет.

var inProgress = false; 

$('selector').click(function() { 
    if (!inProgress) { 
    inProgress = true; 
    ajaxRoutine(); 
    } 
}); 

function ajaxRoutine() { 
    ... 
    inProgress = false; 
    return; 
} 
+1

Не забудьте установить 'inProgress' значение false в случае ошибки. –

+0

@Byron Whitlock: Ну, любое условие выхода вообще необходимо установить флаг. – Orbling

Смежные вопросы