如果用户需要在forgetForm.php中重置他们的电子邮件,我有一个基本表单:
<script src="js/forgotPwd.js" type="text/javascript"></script>
..... <edited for brevity> .....
<form class="forgot active" id="forgotPwdForm" method="post" action="#" autocomplete="off" >
<h2>Reset Password</h2>
<div>
<label>Email</label>
<input type="email" id="email" name="email" placeholder="Email" required />
</div>
<div>
<legend><span id="spambot">Are you human?</span></legend>
<input id="num1" name="num1" readonly="readonly" class="sum" value="<?php echo rand(1,4) ?>" /> +
<input id="num2" name="num2" readonly="readonly" class="sum" value="<?php echo rand(5,9) ?>" /> =
<input id="captcha" name="captcha" class="captcha" maxlength="2" required />
</div>
<div class="bottom">
<button type="submit" class="button-blue" name="submit">Submit</button>
</div>
<div class="messagebox">
<div class="alert-message"></div>
</div>
</form>
forgotPwd.js就是这样:
$("#forgotPwdForm").submit(function() {
if ($("#forgotPwdForm").valid()) {
var data = $('#forgotPwdForm').serialize();
console.log(data);
$.ajax({
type: "POST",
url: "process_forgotPwd.php",
data: data,
dataType: "json",
success: function(msg) {
if (msg.result == 1) {
$('.messagebox').addClass("success-message");
$('.message').slideDown('slow');
$('.alert-message').text("Sending reset pwd email ...");
$('#forgotPwdForm').fadeOut(5000);
window.location = "success.php";
} else {
$('.messagebox').hide();
$('.messagebox').addClass("error-message");
$('.alert-message').html(msg.result);
$('.messagebox').slideDown('slow');
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert('Error: ' + textStatus + ' ' + errorThrown);
}
});
return false;
}
});
此数据输出到控制台,对我来说很好看:
email=johndoe%40gmail.com&num1=2&num2=6&captcha=8
这正是我在表单上输入的内容。在&#34; process_forgotPwd.php&#34;我运行服务器端验证,然后向用户发送一个带有重置链接的电子邮件(他们没有问题)。在&#34; process_forgotPwd.php&#34;的底部我发送回状态,具体取决于电子邮件是否正确发送:
if (!$mail->Send()) {
echo json_encode(array('result' => $msg_email_error));
die();
} else {;
//header("Content-Type: application/json", true);
echo json_encode(array('result' => 1));
exit();
}
(有人提出了我试图无效的标题行)。当控件返回到forgotPwd.js时,它会抛出此错误:
Error: parsererror SyntaxError: JSON.parse: unexpected character at line 2 column 1 of the JSON data
然而我的数据对我来说很好。我错过了什么?
错误:parsererror SyntaxError:JSON.parse:JSON数据第2行第1列的意外字符
答案 0 :(得分:0)
将dataType: "json",
更改为dataType: "text",
。您的服务器返回的数据不是有效的JSON。 dataType
设置不适用于您发送到服务器的数据,而是适用于服务器返回的数据,这意味着解析错误指的是msg
而不是{{1} } 强>
让data
回调中唯一的陈述是:
success
一旦您确认了要返回的数据的结构,请相应地更新console.log( msg );
处理程序中的逻辑和success
值。