PHP&表格刷新

时间:2016-07-02 12:41:47

标签: php html forms

我正在构建一个表单并使用PHP来处理对邮件客户端的请求。现在,当用户提交表单时,我不希望页面刷新,也不希望它一直返回到顶部。

我希望它提交,然后发布我提供的消息,该消息与没有刷新的表单位于同一位置。 AJAX可能吗?

这是代码

PHP

<?php
error_reporting(0);
if(isset($_POST["submit"])) {

$name=$_POST['first_name'];
$email=$_POST['exampleInputEmail1'];
$description=$_POST['description'];
$toaddress = "info@speeakly.com";
$subject = "Propective User";

$mailcontent = "Name: ".$name."\n".
                "Customer Email: ".$email."\n".
                "Customer Description:\n".$description."\n";

$fromaddress = "From: $name";
$messageaftersending = "Thank you, ".$name."! \n".
                      " You've signed up for something awesome. \n";

mail($toaddress, $subject, $mailcontent, $fromaddress);
$hidemydiv = "hide";
}?>

HTML

<span class="thanksmessage text-faded"><?php echo $messageaftersending ?></span>
 <div class="<?php echo $hidemydiv ?>">
  <div class="row">
   <div class="formstyle">
     <form role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" name="myemailform" method="post">

       <div class="col-lg-4 labels">
          <fieldset class="form-group">
             <label class="labels" for="firstname">First Name*</label>
                <input type="text" name="first_name" class="form-control styled" required pattern="[a-zA-Z0-9s\-\s]+" onkeyup="" id="firstname"  pattern="[a-zA-Z0-9]+">
          </fieldset>
          <span class="error"><p id="name_error"></p></span>
</div>

1 个答案:

答案 0 :(得分:1)

Ajax是要走的路。 创建一个接受post params并返回JSON

的php文件
<?php
/* your mail code */
if (all_good) {
   echo(json_encode(array('success' => true));
} else {
   echo(json_encode(array('success' => false));
}
?>

现在创建一个XHR对象以向服务器发送请求,并根据响应显示文本。使用:

var data = JSON.parse(response.text)

解析从PHP发送的JSON数据。 我建议使用jQuery.post()而不是XHR。