【发布时间】:2017-11-27 03:25:41
【问题描述】:
当注册者点击注册时,我通过 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 对象:
{"response":true,"message":"用户注册成功"}
我已经调试了 4 个小时,但毫无意义!
更新:
一般:
请求网址:http://foo.bar/includes/email-register-confirm.php 请求方法:POST 状态码:200 OK 远程地址:127.0.0.1:80 推荐人政策:降级时不推荐人
响应标题:
连接:保持活动状态 内容长度:85 内容类型:文本/html;字符集=UTF-8 日期:格林威治标准时间 2017 年 6 月 23 日星期五 14:12:43 保活:超时=5,最大值=94 服务器:Apache/2.4.23 (Win64) PHP/7.0.10 X-Powered-By:PHP/7.0.10
更新和解决方案
我发现我的 phpmailer 类是用 BOM 文件设置保存的,它在我的 json 回复的开头添加了一个 rougue\ufeff 字符!
【问题讨论】:
-
您的 ajax 调用是否在响应标头中返回 HTTP 200?
-
F12 -> 网络选项卡 -> 检查响应状态(http 代码、响应等)。
-
"我看到的只是一个 JSON 对象:" ??你从哪里看到的?
-
我已经用标题更新了问题,@SarathKumar 我在 Network -> Preview 中看到了 json 对象
-
尝试使用完整的 AJAX 回调而不是成功。您的服务器配置可能存在问题,导致无法成功调用。