Обработайте щелчок только один раз, вы можете пометить кнопку таким образом, чтобы последующий вызов обработчика щелчка мог определить, что загрузка уже началась, и / или отследить объект XMLHttpRequest
, который запустилзапросить и вызвать abort
, а затем запустить новый запрос.
Чтобы ограничить обработку кликов, существует ряд решений.Не зная форму вашего javascript, я бы оценил самый простой в реализации метод, использующий хранилище элементов:
function clickHandler(element) {
// make sure this is not already loading
if (element.retrieve('_waiting_to_load') === true)
return;
element.store('_waiting_to_load', true);
/* do ajax calls */
}
function ajaxCallback(response) {
/* do whatever needs to be done with the response */
// set _waiting_to_load to false
element.store('_waiting_to_load', false);
}
Чтобы прервать / перезапустить загрузку:
function clickHandler(element) {
// if the loading is pending, start it over
if (element.retrieve('_pending_query')) {
element.retrieve('_pending_query').abort();
}
// don't know what you're using for this... substitute the real thing
var query = new ajaxQueryObject;
element.store('_pending_query', query );
}
function ajaxCallback(response) {
/* do whatever needs to be done with the response */
element.store('_pending_query', false);
}