Ajax 和 PHPMailer 错误
Ajax and PHPMailer error
我正在改进代码,但遇到了一些麻烦。
我正在尝试向我的一位用户发送电子邮件。如果电子邮件存在,我没有问题,相反,如果不存在,网站应用程序就会爆炸。
这是我使用 ajax:
的 js 代码
callAjax(url, paramsInsert, true, function (data) {
if (data.success) {
modal("OK", "<h3>ALL OK</h3>", "OK");
} else {
modal("error", "<h3> ERROR </h3>", "Error");
}
});
这是我的 Ajax 函数:
function callAjax(url, parametros, load, funcion) {
if (load) {
var element = document.createElement("div");
element.id = "loadBackground";
element.className = "backLoad";
document.body.appendChild(element);
document.getElementById("contenido").innerHTML = '<div class="loadImage"><div class="col-xs-12 col-sm-12 col-md-12"><div class="col-xs-4 col-sm-4 col-md-4"></div><div class="col-xs-4 col-sm-4 col-md-4"><img class="center-block" src="img/ajax-loader.gif" /></div><div class="col-xs-4 col-sm-4 col-md-4"></div></div></div>';
}
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function () {
if (ajax.readyState === 4) {
//var datos = JSON.parse(ajax.responseText);
var jsontext = ajax.responseText;
var content = eval('(' + jsontext + ')');
//if (content.success) {
funcion(content);
if (load) {
document.getElementById("contenido").innerHTML = '';
document.body.removeChild(document.getElementById("loadBackground"));
}
// }
}
};
ajax.open("POST", url, true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.send(parametros);
}
如果邮件不正确,我会在浏览器的控制台上收到此错误:
jsontext = "SMTP Error: The following recipients failed: gjdfhgdf@dfgndfjkgd.com: : Recipient address rejected: Domain not found
↵{"success":false}"
问题是我没有进入 else "callAjax" 函数。
当我在错误的邮件上收到错误消息时,我如何才能进入 else?
编辑:
我的 php 代码是这样的:
$enviarEmail = $this->sendMAIL($_SESSION['idenUser'], $totalconDescuento, $envioDesc, $_POST['sin_assistente']);
if (!$enviarEmail) {
echo json_encode(['success' => false, 'jsontext' => 'Error']);
} else {
echo json_encode(['success' => true, 'jsontext' => 'OK']);
}
仍然出现同样的错误:
jsontext = "SMTP Error: The following recipients failed: gjdfhgdf@dfgndfjkgd.com: : Recipient address rejected: Domain not found
↵{"success":false,"jsontext":"Error"}"
我也尝试在创建新的 PHPMailer 时添加参数:
$mail = new PHPMailer(false);
$mail->isSMTP();
$mail->SMTPDebug = false;
$mail->do_debug = 0;
在此 post 上找到:Disable PHPMailer error messages
解法:
我通过函数找到这段代码:
if (!$mail->send()) {
echo $mail->ErrorInfo;
$estado = false;
}
所以我刚刚评论了第一个通道以禁用 Errorinfo 打印:)
要进入 else
,您需要确保 data.success
包含一个不会被视为 true
的值,这取决于您 return来自 PHP,而不是你的 JS 中的内容。
如果您想将 return 值处理为 JSON,您实际上需要 return JSON 来自您的 PHP - 您的示例 jsontext
不是。
在你的 PHP 中它会是这样的:
if (!$mail->send()) {
echo json_encode(['success' => false, 'jsontext' => $mail->ErrorInfo]);
} else {
echo json_encode(['success' => true, 'jsontext' => 'OK']);
}
我正在改进代码,但遇到了一些麻烦。
我正在尝试向我的一位用户发送电子邮件。如果电子邮件存在,我没有问题,相反,如果不存在,网站应用程序就会爆炸。
这是我使用 ajax:
的 js 代码callAjax(url, paramsInsert, true, function (data) {
if (data.success) {
modal("OK", "<h3>ALL OK</h3>", "OK");
} else {
modal("error", "<h3> ERROR </h3>", "Error");
}
});
这是我的 Ajax 函数:
function callAjax(url, parametros, load, funcion) {
if (load) {
var element = document.createElement("div");
element.id = "loadBackground";
element.className = "backLoad";
document.body.appendChild(element);
document.getElementById("contenido").innerHTML = '<div class="loadImage"><div class="col-xs-12 col-sm-12 col-md-12"><div class="col-xs-4 col-sm-4 col-md-4"></div><div class="col-xs-4 col-sm-4 col-md-4"><img class="center-block" src="img/ajax-loader.gif" /></div><div class="col-xs-4 col-sm-4 col-md-4"></div></div></div>';
}
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function () {
if (ajax.readyState === 4) {
//var datos = JSON.parse(ajax.responseText);
var jsontext = ajax.responseText;
var content = eval('(' + jsontext + ')');
//if (content.success) {
funcion(content);
if (load) {
document.getElementById("contenido").innerHTML = '';
document.body.removeChild(document.getElementById("loadBackground"));
}
// }
}
};
ajax.open("POST", url, true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.send(parametros);
}
如果邮件不正确,我会在浏览器的控制台上收到此错误:
jsontext = "SMTP Error: The following recipients failed: gjdfhgdf@dfgndfjkgd.com: : Recipient address rejected: Domain not found ↵{"success":false}"
问题是我没有进入 else "callAjax" 函数。
当我在错误的邮件上收到错误消息时,我如何才能进入 else?
编辑:
我的 php 代码是这样的:
$enviarEmail = $this->sendMAIL($_SESSION['idenUser'], $totalconDescuento, $envioDesc, $_POST['sin_assistente']);
if (!$enviarEmail) {
echo json_encode(['success' => false, 'jsontext' => 'Error']);
} else {
echo json_encode(['success' => true, 'jsontext' => 'OK']);
}
仍然出现同样的错误:
jsontext = "SMTP Error: The following recipients failed: gjdfhgdf@dfgndfjkgd.com: : Recipient address rejected: Domain not found ↵{"success":false,"jsontext":"Error"}"
我也尝试在创建新的 PHPMailer 时添加参数:
$mail = new PHPMailer(false);
$mail->isSMTP();
$mail->SMTPDebug = false;
$mail->do_debug = 0;
在此 post 上找到:Disable PHPMailer error messages
解法:
我通过函数找到这段代码:
if (!$mail->send()) {
echo $mail->ErrorInfo;
$estado = false;
}
所以我刚刚评论了第一个通道以禁用 Errorinfo 打印:)
要进入 else
,您需要确保 data.success
包含一个不会被视为 true
的值,这取决于您 return来自 PHP,而不是你的 JS 中的内容。
如果您想将 return 值处理为 JSON,您实际上需要 return JSON 来自您的 PHP - 您的示例 jsontext
不是。
在你的 PHP 中它会是这样的:
if (!$mail->send()) {
echo json_encode(['success' => false, 'jsontext' => $mail->ErrorInfo]);
} else {
echo json_encode(['success' => true, 'jsontext' => 'OK']);
}