PHP отправить пустой экран - скрипт не работает на POST? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть скрипт, который извлекает страницу XML и использует форму для обновления и сохранения значений обратно. Когда я нажимаю кнопку отправки, она работает, но затем страница загружается пустой. Я просто хочу, чтобы страница обновилась. Есть около 100 различных тем на эту тему, и ничего, что я пробовал, не помогло решить проблему. Из любопытства я просто попытался запустить скрипт window.location и ничего больше, и этот фрагмент вообще не работает.

<?php
//if (isset($_POST['submit'])) {
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//$ctstatus->nodeValue = $_POST['ctstatusform'];
//htmlentities($xml->save('test.xml'));
echo '<script type="text/javascript">window.location="http://google.ca";</script>';
}
 ?>

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

Ранее я использовал isset, но после прочтения кажется, что он устарел, а моя форма action = "" раньше была пустой. В любом случае мое сохранение XML работает, но ничего не обновляет страницу. Я также попробовал header, и это тоже не сработало.

    <form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
    <input class="save" name="submit" type="submit" value="Save" />
    </form>

Из любопытства я попробовал функцию onClick с таймером, и она работает, но она не идеальна вообще, особенно потому, что страница может технически обновиться до того, как POST закончит запись файла. Я бы лучше знал, почему эхо не выполняется.

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Хорошо, я разобрался с этим.Оказывается, проблема была смущающе простой, но, возможно, поможет кому-то в будущем.Вместе с переупорядочением моего кода, как предложил Тим.Я указал HTML в качестве DOCTYPE, и это помогло решить проблему.Мне больше не нужно беспокоиться об обновлении страницы после отправки, поскольку она обновляется автоматически.Спасибо всем, кто прокомментировал.

1 голос
/ 25 июня 2019

Перенаправление PHP, скорее всего, предпочтительнее перенаправления JavaScript.

Типичная структура при отправке назад на ту же страницу:

<?php // cannot be any output before this (space, linefeed, etc)

if(isset($_POST['submit']) {

    // do stuff with the submission

    header('Location: http://google.ca');
    exit;
}

// does your script need to do some other data retrieval or calculation?  do it here.

?>
<html>
    ... snip ...
    <form method="post">
        ... snip ...
        <input class="save" name="submit" type="submit" value="Save" />
    </form>

Следуя этой простой структуре для процедурных сценариев--

  1. Работа с пользовательским вводом / перенаправлением
  2. Делать логику (собирать, манипулировать данными)
  3. Показать вывод (используя php только для вставки переменных и зацикливания)

поможет вам избежать много душевных и технических долгов.

...