PHP 提交空白屏幕 - POST 上的脚本不是 运行?
PHP submit blank screen - script not running on POST?
我有一个脚本可以拉取一个 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 完成写入文件之前页面可以在技术上刷新。我想知道为什么 echo 不执行。
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>
遵循程序脚本的这种简单结构 --
- 处理用户输入/重定向
- 做逻辑(收集、操作数据)
- 显示输出(仅使用 php 插入变量和循环)
将帮助您避免很多心痛和技术债务。
好的,我已经解决了这个问题。事实证明,这个问题简单得令人尴尬,但也许将来会帮助某人。正如蒂姆建议的那样,重新排序我的代码。我将 HTML 指定为 DOCTYPE,这有助于解决问题。我不再需要担心提交后刷新页面,因为它会自动刷新。感谢所有评论的人。
我有一个脚本可以拉取一个 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 完成写入文件之前页面可以在技术上刷新。我想知道为什么 echo 不执行。
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>
遵循程序脚本的这种简单结构 --
- 处理用户输入/重定向
- 做逻辑(收集、操作数据)
- 显示输出(仅使用 php 插入变量和循环)
将帮助您避免很多心痛和技术债务。
好的,我已经解决了这个问题。事实证明,这个问题简单得令人尴尬,但也许将来会帮助某人。正如蒂姆建议的那样,重新排序我的代码。我将 HTML 指定为 DOCTYPE,这有助于解决问题。我不再需要担心提交后刷新页面,因为它会自动刷新。感谢所有评论的人。