jQuery AJAX PHPMailer Anomoly

时间:2017-06-23 13:59:35

标签: php jquery phpmailer

当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!

1 个答案:

答案 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);
}
});