我有一个简单的表单,您可以在其中输入电子邮件然后提交。表单通过jquery发送到php脚本,该脚本发送电子邮件(如果电子邮件有效)返回JSON响应,然后jquery根据响应显示div中的成功或失败消息。完成了所有工作。
我想要做的是清除表单,如果它被验证为成功发送。我可以清除表单字段并显示成功/失败消息没有问题,但发现了一个错误。如果有人在表单中输入了另一封电子邮件,则不会显示成功(或失败)消息。但是,php仍在正确执行数据(发送电子邮件)。仅缺少成功/失败消息。成功/失败消息在您第一次提交表单时起作用,但在重置后则不然。这是表格:
<form action="" id="emailsend" method="post" >
Email: <input type="text" name="email" /><br />
<input type="submit" name="submit" value="Submit" ; />
</form>
显示成功/失败消息的部分:
<div id="formResponse"></div>
jquery的
$(document).ready(function(){
$("#emailsend").submit(function(){
$.ajax({
type: "POST",
url: "sendunit4.php",
data: $("#emailsend").serialize(),
dataType: "json",
success: function(msg){
$("#formResponse").removeClass('error');
$("#formResponse").removeClass('success');
$("#formResponse").addClass(msg.status);
$("#formResponse").html(msg.message);
$('#formResponse').fadeOut(2000);
$('#emailsend')[0].reset();
},
error: function(){
$("#formResponse").removeClass('success');
$("#formResponse").addClass('error');
$("#formResponse").html("There was an error submitting the form. Please try again.");
}
});
return false;
});
});
关联PHP脚本的一部分(sendunit4.php):
$to = $_POST['email'];
if ($recipients = $swift->send($message, $failures))
{
$response_array['status'] = 'success';
$response_array['message'] = 'Email sent!';
}
else{
$response_array['status'] = 'error';
$response_array['message'] = 'There was a problem sending';
}
echo json_encode($response_array);
任何想法都将不胜感激。谢谢!