【发布时间】:2012-08-01 23:50:12
【问题描述】:
我的情况
我有一段 javascript 可以对 form.php 上的 web 表单进行多次操作。表单设置为action="form.php",因此在提交时会自行加载。 webform 只建if (!isset($_POST['submit'])),所以发布后,构成webform 的输入元素和容器都不存在。这通常是代码的结构:
<?php if (!isset($_POST['submit'])) {
//the form has not been submitted
?>
<form action="<?php $_SERVER['PHP_SELF']?>" method="post" id="form" name="form">
<!-- general input elements -->
<input type="submit" name="submit" value="Send">
</form>
<?php }
else {
// the form has been submitted
// posted values are submitted to a database
}
?>
尽管如此,javascript 仍会尝试对这些元素进行操作。由于这些不再存在,因此会发生错误。对于某个 HTMLElement 的每次操作,我都可以使用一堆 if (HTMLElement) 语句,但我希望有一个更可靠、更通用的解决方案。
问题
鉴于表单提交到其页面,并且不能在 POST 后简单地继续显示表单,您有什么建议可以检测到网络表单的 POST 并关闭我的 javascript 的某些部分吗?
一个更普遍的问题是:
javascript如何检测php POST?
【问题讨论】:
-
您真的提交了表格吗?或者只是通过javascript重新加载表单?请给代码!
-
您不能在提交页面上执行一些 PHP,将结果保存到会话(或数据库等),然后将表单页面重新加载回其原始状态吗?如果不是,为什么不在 javascript 上使用相同的 PHP IF 条件?
-
Client-side detection of HTTP request method 的可能重复项,问:“是否可以从 JavaScript 检测页面的 HTTP 请求方法(例如 GET 或 POST)?如果可以,如何?”。 A:“一句话——不”
-
感谢您的意见。您的 cmets 以一种有价值的方式帮助我理解了这个问题。
标签: php javascript post webforms