通过AJAX POST成功发送电子邮件但触发了错误回调而不是成功回调

时间:2017-10-24 16:32:33

标签: javascript jquery ajax jquery-validate

我正在使用AJAX发送电子邮件,它可以正常工作,电子邮件会发送给我的收件人。但是,我不明白为什么尽管已发送电子邮件,但未触发AJAX的success回调。相反,会触发error回调。

显然这不是CORS问题,因为我在AJAX的url参数中使用相同的服务器。 Google Dev Tools也未报告任何问题,并显示200 OK

JS代码:

$(document).ready(function(){
    $(".js-validate-2").validate({
        ignore: ":hidden",
        rules: {
            //something
        },
        messages: {
            //something
        },
        submitHandler: function(form) {
            var recipient = "myEmailTest@gmail.com"
            var specifiedProduct = "PRODUCT: " + $('#specifiedProduct').val();
            var msg = $('#msg').val();
            var phone = "TEL: " + $('#phone').val() + ". ";

            var params = {
                "email": recipient,
                "subject": specifiedProduct,
                "body": msg + phone,
            };

            var sendingToSupport = $.ajax({
                url: 'http://myServer/u/support/message',
                data: JSON.stringify(params),
                type: 'POST',
                dataType: 'json',
                contentType: 'application/json',
                success: function(data) {
                    console.log("Huge success");
                    console.log(params);
                    console.log(data);
                    alert("Successfully sent!");
                },
                error: function(data) {
                    console.log("Huge failure");
                    console.log(params);
                    console.log(data);
                    alert("We apologize for an error!");
                    $(".support-form").find("input[type=text], textarea").val("");
                }
            });
        }
    })
})

1 个答案:

答案 0 :(得分:0)

所以,问题是由以下代码引起的:

dataType: 'json',

表示AJAX调用返回的数据将采用JSON格式。因此jQuery将尝试解析这些数据。

在我的情况下,删除此代码有帮助,并且AJAX调用已成功发送并返回了正确的答案。