#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
У меня есть форма, которая отправляет скрипт, выполнение которого может занять много времени (~ 30-60 секунд, плюс-минус). Я хотел бы иметь счетчик, который показывает, что результаты обрабатываются, пока пользователь ожидает. Обычно я бы вставил счетчик в скрипт обработки и покончил с этим, но у меня нет доступа к скрипту. Есть ли способ использовать js / jQuery для отправки AJAX-запроса, а затем загрузить целевую страницу, когда ее обработка будет завершена? Что-то вроде этого — это то, что я хочу:
<script type="text/javascript">
$(function() {
$("#myForm").submit(function () {
var data = $(this).serialize();
$.post("url/to/script.php", data, function (results) {
// replace this entire document, url included, with the results
});
$("#spinner").hide().ajaxStart(function () {
$(this).show();
}).ajaxStop(function () {
$(this).hide();
});
});
});
</script>
Я также открыт для альтернативных идей.
[править]
Чтобы (надеюсь) прояснить: я хочу, чтобы результаты загружались в фоновом режиме, и переходить к ним только после их завершения. Поведение (за исключением счетчика) не должно отличаться для конечного пользователя от отправки формы без использования javascript.
[правка 2]
Мне удалось убедить владельца целевого скрипта установить счетчик на место, так что вопрос теперь академический.
Комментарии:
1. что вы имеете в виду под «включенным URL»? что возвращает ajax? Для замены всего документа выполните
$("body").html(results);
2. Я попробовал это и получил пустой экран. Я подозреваю, что это связано с тем, что находится в <head> результатов. Я попытался разобрать результаты в head и body, а затем присвоить их через jQuery с тем же конечным результатом (пустой экран).
3. AJAX возвращается в переменной «results» как часть функции успеха ($.post() принимает анонимную функцию в качестве ярлыка для добавления функции успеха в AJAX).
Ответ №1:
Если я вас правильно понял…вы не можете заменить URL на javascript. Не могли бы вы просто открыть.Расположение.href = «your-new-url.com «об успехе ajax?
Если вы не можете этого сделать, вы могли бы опубликовать свои результирующие данные из запроса ajax на новый URL и просто заставить эту страницу выдать ваш результат.
Комментарии:
1. Окно настройки. Расположение. href = url приводит к тому, что браузер загружает целевой URL-адрес как совершенно новый запрос, который противоречит цели. Добавление возвращенного HTML-кода в строку URL приводит к разрыву относительных ссылок (как и вставка результатов на страницу поиска).
2. @asgallant Я в курсе, что это делает. Наверное, я не совсем правильно вас понимаю. Если бы вы могли предоставить больше информации о том, что вы пытаетесь, возможно, я мог бы помочь вам дальше?