当reigster点击注册时,我通过ajax请求调用php脚本,该请求创建用户并通过电子邮件发送通知:
$.ajax({
type: "POST",
dataType: "json",
data: dataString,
url: "includes/register-user.php",
success:function(result){
console.log('Success!);
}
});
我的php在邮件发送上有if语句:
if($mail->Send()){
$reply = ['response'=> true, 'message' => 'User successfully registered'];
}
else{
$reply = ['response' => false, 'message' => 'An error has occurred'];
}
echo json_encode($reply);
发送和接收电子邮件,但jQuery中的成功功能不会触发。 PHP中没有其他输出且没有错误,我看到的只是一个JSON对象:
{"回复":真实,"消息":"用户成功注册"}
我已经将这个用了4个小时,这没有任何意义!
更新
一般:
请求网址:http://foo.bar/includes/email-register-confirm.php 请求方法:POST 状态代码:200 OK 远程地址:127.0.0.1:80 推荐人政策:no-referrer-when-downgrade
Repsonse标题:
连接:保持活动 内容长度:85 内容类型:text / html的;字符集= UTF-8 日期:2017年6月23日星期五14:12:43 GMT 保持活跃:超时= 5,最大= 94 服务器:Apache / 2.4.23(Win64)PHP / 7.0.10 X供电-通过:PHP / 7.0.10
更新和解决方案
我发现我的phpmailer类保存了BOM文件设置,在我的json回复开头添加了一个rougue \ ufeff char!
答案 0 :(得分:0)
结果可能不是JSON格式,所以当jQuery尝试解析它时,它会失败。您可以通过错误捕获错误:回调函数。
$.ajax({
type: "POST",
data: dataString,
url: "includes/register-user.php",
success:function(result){
var result=JSON.parse(result);
if(result.response==true){
console.log("Success");
}else{
console.log("Failed!");
}
}, error : function(request, status, error) {
alert("error"+ request.responseText);
}
});