Как обновить страницу формы после отправки формы в _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 в новом окне или вкладке. Это оставляет страницу формы как есть. Я хочу, чтобы страница формы перезагружала или, по крайней мере, reset все поля.

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

Любые предложения?

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

Ответ 1

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

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

Ответ 2

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

FIRST:

В теге init формы, если вы установите 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 - продолжайте с любыми изменениями, которые вы хотите внести на страницу, включая перенаправление на новую страницу.

Ответ 3

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

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

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

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

Там могут быть нежелательные результаты, или это не может быть предпочтительным, но это работает так, как мне нужно.

Ответ 4

location.refresh(true);

поможет