【问题标题】:show ajax success or error message when form is submitted in the same page在同一页面中提交表单时显示 ajax 成功或错误消息
【发布时间】:2013-11-19 20:09:03
【问题描述】:

我有一个简单的 html 表单,我将在其中发送邮件,还有一个名为 ajax-form-submit.php 的文件,文件处理将在其中执行。现在我想通过ajax在html文件中显示成功或失败信息。 所以我的 jQuery 的 html 表单是这样的

<form name="ajaxform" id="ajaxform" action="ajax-form-submit.php" method="POST">
  First Name: <input type="text" name="fname" value ="Ravi"/> <br/>
  Last Name: <input type="text" name="lname" value ="Shanker" /> <br/>
  Email : <input type="text" name="email" value="xx@xxx.com"/> <br/>
  <input type="button"  id="simple-post" value="Run Code" name="submit"/>
</form>

<div id="simple-msg"></div>

<script>
jQuery(document).ready(function() {
  jQuery("#simple-post").click(function() {
    jQuery("#ajaxform").submit(function(e) {
      jQuery("#simple-msg").html("<img src='loading.gif'/>");
        var postData = $(this).serializeArray();
        var formURL = $(this).attr("action");
        $.ajax( {
          url : formURL,
          type: "POST",
          data : postData,
          success:function(data, textStatus, jqXHR) {
            jQuery("#simple-msg").html('<pre><code class="prettyprint">'+data+'</code></pre>');
          },
          error: function(jqXHR, textStatus, errorThrown) 
          {
          $("#simple-msg").html('<pre><code class="prettyprint">AJAX Request Failed<br/> textStatus='+textStatus+', errorThrown='+errorThrown+'</code></pre>');
          }
      });
      e.preventDefault();  //STOP default action
  });

  $("#ajaxform").submit(); //SUBMIT FORM
});

});
</script>

现在邮件要去的php文件是这样的

<?php
if (isset($_POST['submit'])) { 
  $name = $_POST['name'];
  $lname = $_POST['lname'];
  $email = $_POST['email'];
  $ToEmail = 'test@demo.com';
  $MESSAGE_BODY = "Name: ".$_POST["name"]."<br>"; 
  $MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>";
  $mail = mail($ToEmail, $MESSAGE_BODY);
  if($mail) {
    echo "Mail sent successfully";
  }
  else {
    echo "oops there is some error";
  }
  }
?>

我希望成功消息或错误消息应该显示在 html 页面中。 它只显示任何消息都写在if (isset($_POST['submit'])) { 函数之外,但这样做我无法显示成功消息或错误消息。那么有人可以告诉我该怎么做吗?任何帮助都会非常显着。谢谢。

【问题讨论】:

    标签: php html jquery


    【解决方案1】:

    HTML

    <form name="ajaxform" id="ajaxform" action="ajax-form-submit.php" method="POST">
        First Name: <input type="text" name="fname" id="fname" value ="Ravi"/> <br/>
        Last Name: <input type="text" name="lname" id="lname" value ="Shanker" /> <br/>
        Email : <input type="text" name="email" id="email"  value="xx@xxx.com"/> <br/>
        <input type="button"  id="simple-post" value="Run Code" name="submit"/>
    </form>
    <div id="simple-msg"></div>
    
    <script type="text/javascript">
    
    jQuery("#simple-post").click(function() {
    
        jQuery("#simple-msg").html("<img src='loading.gif'/>");        
        var formURL = $(this).attr("action");
        var fname = $("#fname").val();
        var lname = $("#lname").val();
        var email = $("#email").val();
        $.ajax({
            url : formURL,
            type: "POST",
            data : {
                aFname: fname,
                aLname: lname,
                aEmail: email,
                aSubmit:"submit"
                   },
            success:function(data, textStatus, jqXHR) {
                jQuery("#simple-msg").html('<pre><code class="prettyprint">'+data+'</code></pre>');
            },
            error: function(jqXHR, textStatus, errorThrown){
                $("#simple-msg").html('<pre><code class="prettyprint">AJAX Request Failed<br/> textStatus='+textStatus+', errorThrown='+errorThrown+'</code></pre>');
            }
        });
    });
    </script>
    


    PHP

    if (isset($_POST['aSubmit'])) {
        $name = $_POST['aFname'];
        $lname = $_POST['aLname'];
        $email = $_POST['aEmail'];
        $ToEmail = 'test@demo.com';
        $MESSAGE_BODY = "Name: ".$_POST["aFname"].' '.$_POST["aLname"]."<br/>"; 
        $MESSAGE_BODY .= "Email: ".$_POST["aEmail"]."<br/>";
        $mail = mail($ToEmail, $MESSAGE_BODY);
        if($mail) {
            echo "Mail sent successfully";
        }
        else{
            echo "oops there is some error";
        }
    }
    

    注意:_我想在这里提一下,我没有展示任何努力来防止 SQL 注入或任何其他类型的漏洞预防,因为这会增加复杂性你。但是,请确保在将此类代码发布到实际网站之前,您已尽一切努力阻止您的网站。_

    【讨论】:

      【解决方案2】:

      我建议使用 JSON(使用 PHP json_encode())将状态(成功或错误)发送回客户端。为此,您还需要使用 JQuery 脚本在页面中添加 JSON 侦听器。

      【讨论】:

        猜你喜欢
        • 2021-06-27
        • 1970-01-01
        • 1970-01-01
        • 2015-07-13
        • 1970-01-01
        • 1970-01-01
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多