[英]Reset Form after captcha validation in ajax jquery
<?php
session_start();
if($_POST["captcha"]==$_SESSION["captcha_code"]){
$email_to = "123@gmail.com";
$email_subject = "Mail from contact form";
$name = $_POST['name']; // required
$topic = $_POST['topic']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['phone']; // not required
$message = $_POST['message']; // required
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "Email From : ".clean_string($email_from)."\n";
$email_message .= "Contact no: ".clean_string($telephone)."\n";
$email_message .= "Regarding: ".clean_string($topic)."\n";
$email_message .= "message: ".clean_string($message)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
echo "<p class='success'>Your message has been sent. Thank you!</p>";
} else {
print "<p class='Error'>Enter Correct Captcha Code.</p>";
}
?>
这是在检查 capthca 后从我的 php 文件返回的。
这是我在另一个文件中的脚本。 在 php 中进行 capthca 验证后,它返回 html 数据。 我需要在成功验证后重置表单。
function sendContact() {
var valid;
valid = validateContact();
if(valid) {
jQuery.ajax({
url: "contact_mail.php",
data:'name='+$("#name").val()+'&email='+$("#email").val()+'&phone='+$("#phone").val()+'&topic='+$("#topic").val()+'&message='+$("#message").val()+'&captcha='+$("#captcha").val(),
type: "POST",
success:function(data){
$("#mail-status").html(data);
},
error:function (){}
});
}
}
我试过这个
success:function(data){
$("#mail-status").html(data);
$("#name").val('');
$("#email").val('');
$("#phone").val('');
$("#topic").val('');
$("#message").val('');
$("#captcha").val('');
$("#captcha_code").attr('src','captcha_code.php');
}
},
error:function (){}
});
但即使 capthca 错误,它也会重置。 意味着来自 php 的任何回复表单都会重置。 任何解决方案
试试这个代码-
<?php
session_start();
if($_POST["captcha"] == $_SESSION["captcha_code"]) {
$email_to = "123@gmail.com";
$email_subject = "Mail from contact form";
$name = $_POST['name']; // required
$topic = $_POST['topic']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['phone']; // not required
$message = $_POST['message']; // required
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "Email From : ".clean_string($email_from)."\n";
$email_message .= "Contact no: ".clean_string($telephone)."\n";
$email_message .= "Regarding: ".clean_string($topic)."\n";
$email_message .= "message: ".clean_string($message)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
echo json_encode("success" => "Your message has been sent. Thank you!");
} else {
echo json_encode("error" => "Enter Correct Captcha Code");
}
?>
并在 ajax 成功(使用 dataType json)-
dataType: 'json',
success:function(data){
if(data.success){
$("#form-id").trigger("reset");
}elseif(data.error){
alert(data.error);
}
error:function (){}
});
试试这个代码:
$("#form-id")[0].reset();
尝试这个:
function sendContact() {
var valid;
valid = validateContact();
if(valid) {
jQuery.ajax({
url: "contact_mail.php",
data:$("#form_id").serialize(),
type: "POST",
success:function(data){
$('#form_id').trigger("reset");
$("#mail-status").html(data);
},
error:function (){}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.