Как я могу обновить страницу формы после отправки формы в _blank?

У меня есть HTML-форма, предназначенная для _blank. Я хочу, чтобы страница, на которой находится форма, перезагрузилась после отправки.

Итак, вот пример разметки:

<form method="POST" action="result.php" target="_blank">
    <label for="name">Name:</label>
    <input type="text" name="name" />

    <label for="email">Email:</label>
    <input type="email" name="email" />

    <input type="submit" value="submit" />
</form>

Поэтому, когда вы отправляете эту форму, она будет POST result.php в новом окне или на новой вкладке. Это оставляет страницу формы как есть. Я хочу, чтобы страница формы перезагрузилась или хотя бы сбросила все поля.

Я пробовал <form onsubmit="location.reload()"..., а также onsubmit="window.location.reload()", но ничего не изменилось.

Какие-либо предложения?

(пожалуйста, без jquery)


person Hal Carleton    schedule 20.09.2013    source источник


Ответы (4)


Не уверен, почему window.location.reload() не работает. Я думаю, так и должно быть. Однако, похоже, это работает:

onsubmit="setTimeout(function () { window.location.reload(); }, 10)"
person Explosion Pills    schedule 20.09.2013
comment
идеально! не уверен, почему я не подумал об этом. Думаю, я просто слишком долго не работал с JS. Спасибо за помощь! - person Hal Carleton; 20.09.2013
comment
Но время 10 не так хорошо, потому что иногда отправка выполняется быстро, а иногда медленно. - person Summer Sun; 14.03.2016
comment
Я согласен, что 10 - это не так уж и хорошо (что, если у сервера плохой день и требуется больше 10 мс для сохранения изменений). Я нашел здесь этот замечательный самородок: stackoverflow.com/a/22567796/781079, который использует ajax - person amackay11; 04.06.2018

Есть два способа сделать это, один, о котором вы, возможно, не хотите слышать.

ПЕРВЫЙ:

В теге инициализации формы, если вы установите action="", форма будет отправлена ​​на ту же страницу (на себя).

<form action="" method="post">

Это позволяет вам добавить серверный код вверху страницы, например (используя PHP, например):

<?php
    If (empty($_POST)===false) {
        //server side scripting to handle the submitted form
    }else{
?>
    //HTML to create/show the page with form for user input
<?php
    //Close the if statement
    }
?>

ВТОРОЙ:

Используйте AJAX (javascript или jQuery) для «отправки» формы, а затем - в обратном вызове функции AJAX - продолжайте любые изменения, которые вы хотите внести на страницу, включая перенаправление на новую страницу.

person cssyphus    schedule 20.09.2013

Принятый ответ не дал мне желаемых результатов.

Accepted answer:
onsubmit="setTimeout(function () { window.location.reload(); }, 10)"

Изменение принятого ответа с onsubmit на onclick устранило мою проблему;

Worked for me:
onclick="setTimeout(function () { window.location.reload(); }, 3)"

Могут быть нежелательные результаты, или это может быть нежелательно, но для меня это работает так, как хотелось бы.

person Community    schedule 11.06.2019
comment
Полагаться на время ненадежно. Это может произойти случайно в зависимости от загрузки сервера, скорости сети и т. Д. - person juzzlin; 02.04.2020

location.refresh(true);

помогу

person asa    schedule 28.11.2014
comment
Спасибо. Я знаю, что это было отклонено. но у меня это сработало. сделал именно то, что мне нужно. то есть обновил мою часть после того, как я отправил. - person Vishav Premlall; 30.10.2017