Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

сброс формы javascript

#javascript #submit


Есть форма form с inputaction, value которого пустая строка, есть кнопка add, по
клику которой вызывается скрипт:

function act2() {
    //получение формы
    form.action.value='add';
    form.submit();
}


Необходимо сбросить значение input на пустое. 
Навигация на ту же страницу - не вариант - вызывает ряд ненужных багов.
Опытным путем был найдет вариант:

function act2() {

    //получение формы
    form.action.value='add';
    form.submit();
    setTimeout( function(){form.action.value=''; form.submit();}, 100)

}


Однако появилось одно НО. В зависимости от сервера/количества данных в базе/фазы
луны варьируется число, которое стоит под таймаутом, необходимое для того, чтобы функции
в нем выполнились.

Есть подозрение, что это все происходит из-за разного времени обработки сервером
формы после submit. Есть какой-то вариант проверить, закончилась ли обработка формы
сервером и только после этого вызвать функции, которые под таймаутом?
Или же есть еще какой-то вариант сбросить значение этого input?

UPD: Очистка формы должна быть, естественно, после ее первой отправки на сервер с
заполненным action.

Сервер Weblogic
Какой и как "сервлет" отрабатывает - пока нет возможности отследить.
    


Ответы

Ответ 1



Необходимо сбросить значение input на пустое. Вызов form.submit(); уже отправил данные, что приведёт к переходу на другую страницу. Следовательно, ничего сбрасывать уже смысла нет. Форма отправлена, осуществлён переход на другую страницу post-запросом. При обновлении по F5 будет нужен такой же post-запрос, о чём и предупреждает браузер. Если нажать Да, то будет повторно послан последний запрос, независимо от того, что ты успеешь сделать с формой после её отправки. Ты пытаешься это покрыть повторной отправкой form.submit() после изменения, но это неправильно. Отлично, суть моего вопроса - как избежать повторной отправки, не используя навигацию на ту же страницу, на которой нахожусь, после первого сабмита Сделать с той страницы, на которую ты попал post'ом переход через get. Этого можно добиться ответом сервера 302 Found с редиректом на нужную страницу.

Комментариев нет:

Отправить комментарий