AJAX多部分表单从不调用成功函数

时间:2017-12-10 16:20:09

标签: javascript jquery ajax

我使用ajax提交一个多部分表单并且它从不调用成功函数(虽然表单提交确实成功),它总是重定向到表单的php页面。

这是我的代码:

 $('#pre-register-contact-form').on('submit', function (e) {
    if (!e.isDefaultPrevented()) {
        var url = "preregisterform.php";
        $.ajax({
            type: "POST",
            url: url,
            contentType: false,
            data: new FormData($(this)),
            processData: false,
            success: function (data)
            {
                    // Never reaches here!
                var messageAlert = 'alert-' + data.type;
                var messageText = data.message;
                var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + messageText + '</div>';
                if (messageAlert && messageText) {
                    $('#pre-register-contact-form').find('.messages').html(alertBox);
                    $('#pre-register-contact-form')[0].reset();
                    grecaptcha.reset();
                }
            },
            error: function(error) {
                alert(error);
            }
        });
        return false;
    }
});

但是,如果我不使用下面的代码以多部分方式提交表单,则会调用成功函数:

$('#pre-register-contact-form').on('submit', function (e) {
        if (!e.isDefaultPrevented()) {
            var url = "preregisterform.php";

            $.ajax({
                type: "POST",
                url: url,
                data: $(this).serialize(),
                success: function (data)
                {
                    var messageAlert = 'alert-' + data.type;
                    var messageText = data.message;

                    var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + messageText + '</div>';
                    if (messageAlert && messageText) {
                        $('#pre-register-contact-form').find('.messages').html(alertBox);
                        $('#pre-register-contact-form')[0].reset();
                        grecaptcha.reset();
                    }
                }
            });
            return false;
        }
    });

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我需要将$(this)更改为this然后才能正常工作