Ajax和PHPMailer错误

问题描述 投票:0回答:1

我正在改进代码,但我遇到了一些麻烦。

我正在尝试向我的一位用户发送电子邮件。如果电子邮件存在我没有问题,相反,如果不存在,网站应用程序爆炸。

这是我使用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打印:)

javascript ajax phpmailer
1个回答
0
投票

要进入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']);
}
© www.soinside.com 2019 - 2024. All rights reserved.