我正在构建一个表单并使用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>
答案 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。