我有一个脚本,可以提取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完成写入文件之前刷新。我更想知道为什么回声无法执行。
答案 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 :(得分:1)
好的,我已经弄清楚了。事实证明,这个问题非常简单,但是将来可能会帮助某个人。正如Tim所建议的,除了重新排序我的代码。我将HTML指定为DOCTYPE,并且可以解决该问题。我不再担心提交后刷新页面,因为它会自动刷新。谢谢所有发表评论的人。