我正在改进代码,但我遇到了一些麻烦。
我正在尝试向我的一位用户发送电子邮件。如果电子邮件存在我没有问题,相反,如果不存在,网站应用程序爆炸。
这是我使用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错误:以下收件人失败:[email protected] ::收件人地址被拒绝:找不到域名↵{”成功“:false}”
问题是我没有进入else“callAjax”函数。
当我在错误的邮件上收到错误时,我怎么能进入其他地方呢?
编辑:
我的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错误:以下收件人失败:[email protected] ::拒绝收件人地址:找不到域↵{”成功“:false,”jsontext“:”错误“}”
我还尝试在创建新的PHPMailer时添加参数:
$mail = new PHPMailer(false);
$mail->isSMTP();
$mail->SMTPDebug = false;
$mail->do_debug = 0;
在这篇文章中找到:Disable PHPMailer error messages
解:
我通过函数找到了这段代码:
if (!$mail->send()) {
echo $mail->ErrorInfo;
$estado = false;
}
所以我只是评论了fisrt lane来禁用Errorinfo打印:)
要进入else
,你需要确保data.success
包含一个不会被视为true
的值,这取决于你从PHP返回的内容,而不是你的JS中的内容。
如果要将返回值作为JSON处理,则需要实际从PHP返回JSON - 您的示例jsontext
不是。
在你的PHP中它将是这样的:
if (!$mail->send()) {
echo json_encode(['success' => false, 'jsontext' => $mail->ErrorInfo]);
} else {
echo json_encode(['success' => true, 'jsontext' => 'OK']);
}