PHP提交黑屏-脚本未在POST上运行?

时间:2019-06-25 02:56:59

标签: php forms post submit

我有一个脚本,可以提取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保存都可以工作,但是无法刷新页面。我还尝试了标头,但也没有用。

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

出于好奇,我尝试了使用计时器的onClick函数,此方法确实起作用,但它并不理想,特别是因为从技术上讲,页面可以在POST完成写入文件之前刷新。我更想知道为什么回声无法执行。

2 个答案:

答案 0 :(得分:1)

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插入变量和循环)

将帮助您避免大量的头痛和技术债务。

答案 1 :(得分:1)

好的,我已经弄清楚了。事实证明,这个问题非常简单,但是将来可能会帮助某个人。正如Tim所建议的,除了重新排序我的代码。我将HTML指定为DOCTYPE,并且可以解决该问题。我不再担心提交后刷新页面,因为它会自动刷新。谢谢所有发表评论的人。