Как избежать вызова метода ajax более одного раза? - PullRequest
3 голосов
/ 18 января 2010

У меня есть приложение .NET, которое обращается к методам, расположенным в обработчиках, через вызовы AJAX.При этом вызовы AJAX запускаются, как правило, когда пользователь нажимает на определенные кнопки.Моя проблема возникает, когда пользователь нажимает кнопки более одного раза.Это портит все состояние моего объекта.

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

Спасибо!

Ответы [ 3 ]

1 голос
/ 18 января 2010

Я считаю, что это лучше всего достигается с помощью клиентского кода. Если вы используете jQuery, то one () может быть элегантным решением. В качестве альтернативы вы можете установить для переменной значение true при запуске запроса и установить значение false, когда закончите. Затем предотвратите все дальнейшие запросы, пока переменная установлена ​​в true.

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

1 голос
/ 18 января 2010

в методе onclick, удалите обработчик кнопки onclick, затем запустите ajax-вызов в фоновом режиме с помощью setTimer и верните true ...

после завершения ajax вы можете при желании повторно присоединить обработчик onclick.

0 голосов
/ 18 января 2010

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

См. http://malsup.com/jquery/block/#

...