Я использую Spring MVC, и я создал контроллеры, и я обращаюсь к ним с помощью запроса JQuery Ajax, но иногда бывает возможно, что процесс занимает много времени , поэтому я хочу дать пользователю возможность остановить запрос для этого, я использую функцию прерывания JQuery, и он успешно завершает запрос Ajax, но не останавливает процесс, запущенный на контроллере. Есть ли другой способ сделать это?Остановить запрос Ajax, а также процесс, запущенный на контроллере весной
ответ
Объявляем переменную для хранения запрос на АЯКС
var req = $.ajax({
type: 'GET',
url: '<*url*>',
......
});
Мы можем использовать мой запрос .abort()
req.abort();
Проверка для справки jQuery ajax
еще раз проверьте его вопрос. Он в состоянии это сделать. О чем беспокоит OP, является код контроллера, который уже запущен сейчас. –
Я уже использовал его, пожалуйста, внимательно прочитайте мой вопрос. Спасибо. –
Спасибо за это. Ну, остановка ответа не невозможна, но будет неопрятный код. Тем не менее, если это требование, вы можете сделать это другим способом. Вы всегда можете держать сеанс проверки во время выполнения кода вашего контроллера.Событие на стороне клиента (например, нажатие кнопки) всегда может запускать еще один ajax, чтобы отключить эту переменную сеанса по требованию. – Subhasis
Если запрос уже отправлен на сервер то сервер будет обрабатывать запрос, даже если мы отменим запрос, но клиент не будет ждать/обрабатывать ответ ,
Возможно, вам придется написать какую-то пользовательскую логику, где инициировать поток в контроллере для каждого такого вызова ajax и отслеживать их идентификатор потока. Затем при запросе на прерывание вернитесь в контроллер и убейте этот поток.
Просто базовая идея, я не реализовал ее сам, поэтому не уверен в проблемах с кодом/логикой, с которыми вы можете столкнуться.
Да, я тоже подумал об этом, но потом мне нужно использовать многопоточность, а также получить все потоки, но это будет сложная задача. это решение, но я буду использовать его в качестве последнего решения. Я ищу еще одно простое и выполнимое решение, но спасибо за ваши усилия. –
просто для того, чтобы улучшить lil бит в моем ответе - каждый HTTP-запрос представляет собой отдельный поток сам по себе. Поэтому, возможно, вам не нужно писать собственный код для многопоточности. но продолжайте регистрировать эти потоки запросов в некоторой статической коллекции. и убить и отменить регистрацию при прерванном вызове. –
ОК, я попробую это. –
Ваш предел jQuery() остановит клиента для прослушивания ответа, но все же сервер будет обрабатывать.
я могу думать о чем-то: (я надеюсь, что этот процесс достаточно долго для вас, чтобы остановить, кстати)
- Непрерывный опросом с помощью нити. Имейте флаг состояния, который читает на высокой частоте, так что, когда вы делаете прерывание, вы обновляете статус запроса для остановки. Если включен непрерывный опрос, вы можете проверить, что статус теперь отменяется, а поток остановлен или что-то в этом роде.
Если вы не используете какую-либо пользовательскую логику, невозможно остановить непрерывный процесс на уровне контроллера. Поскольку процесс контроллера и пользовательский интерфейс - это два разных уровня, единственное соединение между ними - это запрос на соединение с запросом на соединение.
abort на стороне javascript может вызвать большой риск для вашего приложения, бэкэнд завершит процесс, но ui не будет знать об этом. Вы можете управлять временем ответа на стороне контроллера и возвращать ошибку и прерывать процесс контроллера своей собственной логикой. например, если у вас есть какой-то цикл на контроллере, поставьте timecheck или у вас есть другое соединение сокета, например db, настройте свое соединение на основе параметра тайм-аута.
Что вы хотите сделать, напрямую связано с реализацией вашего контроллера.
- 1. Как остановить запущенный запрос mysql
- 2. Как остановить запущенный запрос MySQL?
- 3. Как остановить запущенный процесс в Netbeans
- 4. Как заставить остановить запущенный процесс, даже работающий на фронте?
- 5. Убить запущенный процесс в ColdFusion?
- 6. Как убить процесс, запущенный cmd.exe
- 7. Остановить процесс, запущенный скрипта и получить заблокированный код
- 8. остановить процесс загрузки AJAX AsynchFileUpload
- 9. Ломать запущенный процесс программно
- 10. , чтобы остановить запущенный метод
- 11. Как отладить запущенный процесс?
- 12. Есть ли способ остановить запущенный процесс в concurrent.futures?
- 13. Как остановить процесс, запущенный с помощью настройки внешних инструментов Eclipse
- 14. Асинхронный процесс весной
- 15. Остановить цикл AJAX-запрос
- 16. Как остановить запрос Ajax
- 17. Как остановить запрос ajax?
- 18. Как убить процесс NOHUP, запущенный через SSH
- 19. Последний запрос, запущенный на MySQL
- 20. Как захватить запущенный процесс .Net на диск?
- 21. вывод команды времени на уже запущенный процесс
- 22. Отправлять команды на запущенный Java-процесс
- 23. Остановить процесс на Android с помощью Ruboto
- 24. Как остановить цикл, запущенный сразу
- 25. идентификация события на контроллере Tableview, а также контроллер табло?
- 26. как прекратить бесконечно запущенный процесс
- 27. Как остановить запущенный сервер solr?
- 28. Как остановить запущенный скрипт python
- 29. Как мне убить запущенный Java-процесс, запущенный Ant?
- 30. Как использовать ajax & j Запрос весной
Я не думаю, что это можно сделать, если вы не проводите непрерывный опрос текущего статуса или что-то с сервера –