Как предотвратить подобные, если пользователь нажмет много раз на ссылку, которая запускает AJAX вызов, что он только бежать снова после того, как она была успешнойТолько один Аякс вызова, ждать, пока успеха до следующего щелчка
ответ
Одним простым решением является добавление класса к ссылке при щелчке пользователем и удаление класса при получении ответа.
Каждый щелчок ссылки проверяет, существует ли класс pending
и отправляет запрос AJAX, если нет.
Затем обратный вызов complete:
удаляет класс pending
.
$('a.myLink').click(function() {
var $th = $(this);
if(!$th.hasClass('pending')) {
$th.addClass('pending');
$.ajax({
url:'something',
complete: function() {
$th.removeClass('pending');
}
});
}
});
Поскольку вы используете jQuery, вы также можете использовать jQuery.data() для подключения этого значения ожидающих данных См. http://api.jquery.com/jQuery. data/ – Dancrumb
@ Dancrumb - Это правда. Хорошая вещь о добавлении класса заключается в том, что вы можете использовать его, чтобы предоставить пользователю некоторую визуальную обратную связь, чтобы показать, что ссылка не доступна. Готов поспорить, что это более быстрая операция, чем доступ к '.data()'. Не уверен, хотя. – user113716
если вы имеете в виду то, что, я думаю, вы имеете в виду, то, как только нажимается кнопка, вы отключите кнопку в своей функции ajax (прежде чем перейти к фактическому составлению HTTP-запроса). Затем, как только ваш вызов ajax будет завершен, функция onreadystate
снова включит его.
, чтобы отключить кнопку, если у нее есть идентификатор.
document.getElementById("theidofthebutton").enabled = false;
включить его заново ...
document.getElementById("theidofthebutton").enabled = true;
Edit: Я вижу, вы ссылаетесь на ссылку не кнопка. Я мог ошибаться, но я думаю, что вы все равно можете отключить таким же образом.
MrVimes - Я думал, что вы можете что-то сказать об отключении ссылки, но я сделал быстрый тест. Кажется, не работает. http://jsfiddle.net/KkYCm/ – user113716
Попробуйте использовать JQuery плагин BlockUI блокировать пользователю снова, нажав на ссылку. Это можно сделать на уровне элемента или страницы.
// unblock when ajax activity stops
$(document).ajaxStop($.unblockUI);
function test() {
$.ajax({ url: 'wait.php', cache: false });
}
$(document).ready(function() {
$('#pageDemo2').click(function() {
$('div.test').block({ message: '<h1><img src="busy.gif" /> Just a moment...</h1>' });
test();
});
});
- 1. Javascript ждать АЯКС успеха перед выполнением кода
- 2. Время до следующего щелчка
- 3. Как многократно вызывать функцию и ждать завершения до следующего вызова?
- 4. onClick жду, пока звук не завершится до следующего щелчка
- 5. как ждать slideToggle закончить до следующего нажатия кнопки
- 6. removeClass() не запускается до следующего щелчка
- 7. JQuery отложено - ждать, пока два вызова полного
- 8. переменной от АЯКС успеха
- 9. Javascript ждать запроса экстерном АЯКС
- 10. Сделать один поток ждать, пока другой закончит
- 11. вызова Нокаут модель функция на АЯКС успеха вне сферы
- 12. Задержка выполнения href щелчка до вызова ajax
- 13. Аякс нагрузки ответа успеха DIVS
- 14. отменить preventDefault после АЯКС успеха
- 15. Список доступа успеха список АЯКС
- 16. Доступ взгляд изнутри АЯКС успеха() вызов
- 17. объекта после АЯКС операции успеха - JQuery
- 18. Нет расположение заголовка внутри успеха обратного вызова для жасмина дразнил АЯКС вызова
- 19. ждать АЯКС закончить в функции
- 20. Ждать вызова AsyncTask до окончания предыдущего
- 21. Временно приостанавливать метод до следующего вызова
- 22. не выполнять сценарий только один раз до следующего обновления
- 23. Выполнение функции ajax до получения успеха другого вызова ajax
- 24. jQuery ждать окончания первой анимации до начала следующего
- 25. Спящий до следующего второго
- 26. bat файл. удалить до успеха?
- 27. установленного значения для jqxDropDownlist когда Аякс успеха
- 28. Невозможно разобрать данные АЯКС вызова
- 29. Подождите, пока все файлы будут использованы до запуска следующего маршрута.
- 30. вызова Javascript валидация АЯКС
Почему бы не вставить код, из которого вы начинаете. – kalpaitch