php - 如何使用 javascript 检测 php POST?

标签 php javascript post webforms

我的情况

我有一段 javascript,可以对 form.php 上的 Web 表单进行多项操作。该表单设置为 action="form.php",因此在提交时会自行加载。网络表单仅构建 if (!isset($_POST['submit'])),因此发布后,构成网络表单的输入元素和容器不存在。代码的结构通常如下:

<?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 后继续显示表单,您是否有建议我如何检测 Web 表单的 POST 并关闭 javascript 的某些部分?

一个更普遍的问题是:

javascript 如何检测 php POST?

最佳答案

我想到的一件事是这样的:

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') $isPost = true; ?>

// later on in your script

<?php if (!$isPost): ?>
<script type="text/javascript">
// the JS code that manipulates your form
</script>
<?php endif; ?>

基本上,如果表单已发布,则不要渲染操作它的 JS 代码。如果该代码与您始终想要包含的其他代码混合在一起,那么您必须以稍微不同的方式进行工作。在这种情况下,您可以尝试:

<script type="text/javascript">
var isPost = <?php echo $isPost ? 'true' : 'false' ?>;

if (!isPost) {
    document.getElementById('blah').doSomething();
}
</script>

关于php - 如何使用 javascript 检测 php POST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11804040/

相关文章:

PHP打开另一个带有POST数据的网页

javascript 和 c++ 双数 0.0

javascript - 捕获 SVG 路径元素中的指针事件

javascript - jquery AJAX 中的 slideDown 传入数据

php - 获取帖子分享 MySql 和 PHP

php - 在 CURL 中使用 cookie jar 时如何注入(inject) cookie?

php - 从 MessageBag 中删除消息

php - 如何将嵌入式设备中的 C 结构传输到 PHP

php 数组为空 - 如何获取 NOT

post - Jenkins 输入管道步骤通过带有 CSRF 的 POST 填充 - 如何?