如何避免在php表单提交中重新加载页面

Posted

技术标签:

【中文标题】如何避免在php表单提交中重新加载页面【英文标题】:How to avoid page reload in php form submission 【发布时间】:2014-06-05 11:02:45 【问题描述】:

我目前在我的 html 页面中使用 php,并且在同一页面中有一个在表单提交时执行的操作。目前整个表单被重新加载,而我希望 php 操作在后台运行而不重新加载。我该怎么做。单击提交按钮后,我还想清除文本框。以下是我目前使用的代码

<html>
<head>
</head>

<body>
    <form action="index.php" method="post"  role="form">
        <input type="email" placeholder="Enter email"  name="email_address">
        <button class="btn btn-primary custom-button red-btn">Sign Up</button>
    </form>

<?php



if(isset($_POST['email_address'])  !(trim($_POST['email_address']) == ''))

// do some action


?>
</body>

</html>

注意:以下代码对我有用

<script type="text/javascript">
    $('#contactForm').submit(function () 
       $.post("mailer.php",$("#contactForm").serialize(), function(data)
       );
        return false;
    );
</script>

【问题讨论】:

您应该将用户重定向到其他页面,例如谢谢.. 【参考方案1】:

您需要为此使用 AJAX,无需重新加载。或者,如果您想在不干扰页面的情况下进行操作,则需要设置target

使用 AJAX

$("form").submit(function()
  $.post($(this).attr("action"), $(this).serialize());
  return false;
);

使用target

<form action="index.php" method="post" role="form" target="_blank">

【讨论】:

我会谨慎使用 return false; - 通常更喜欢 e.preventDefault() 因为返回 false 也会停止事件传播,如果您依赖事件冒泡可能会影响其他功能。 $('#contactForm').submit(function () $.post("mailer.php",$("#contactForm").serialize(), function(data) ); 返回 false; );为我工作【参考方案2】:

使用 ajax

HTML

<html>
<head>
</head>

<body>
    <form id="myform"><!--changge-->
        <input type="email" placeholder="Enter email"  name="email_address">
        <button class="btn btn-primary custom-button red-btn" id="signup">Sign Up</button>
    </form>
</body>
</html>
<script>
    $(document).ready(function()
    
        $('#signup').click(function()
    
         $.ajax(
          url:'index.php',
          method:'post',
          data : $('#myform').serialize(),
          success:function()
         
          

    );
    );
    );
</script>

【讨论】:

这给了我语法错误 $.post("mailer.php",$("#contactForm").serialize(), function(data) );【参考方案3】:

你可以试试这个

<html>
<head>
</head>

<body>
    <form id="myform" action="index.php"><!--changge-->
        <input type="email" placeholder="Enter email"  name="email_address">
        <button class="btn btn-primary custom-button red-btn" id="signup">
         Sign Up</button>
    </form>

<script>
$(document).ready(function()
    $('#signup').click(function()
        $.post($(this).attr("action"), $("#myform").serialize(),function(response)
            alert(response) // you can get the success response return by php after submission success
        );
    );
);

【讨论】:

以上是关于如何避免在php表单提交中重新加载页面的主要内容,如果未能解决你的问题,请参考以下文章

重定向到同一页面php后避免表单重新提交[重复]

表单提交后如何防止页面重新加载 - JQuery

php sql,表单在页面加载时重新提交

如何在不重新加载页面的情况下提交表单[重复]

表单自动仅提交一次并重新加载相同的页面

提交表单而不重新加载页面