jQuery ajax愚蠢的错误

时间:2016-04-23 23:08:30

标签: javascript jquery ajax

我一直在编写ajax请求,但我遇到了问题。

var addonUploadForm = $('#addonUploadForm');

var addonUploadFormMessages = $('#addonUploadForm-messages');

$(addonUploadForm).submit(function(e) {
    e.preventDefault();

    //var formData = $(addonUploadForm).serialize();
    //var formData = new FormData($(this)[0]);
    var formData = new FormData($('#addonUploadForm')[0]);

    $.ajax({
        type: 'POST',
        url: $(addonUploadForm).attr('action'),
        data: formData,
        xhr: function() {  },
        cache: false,
        contentType: false,
        processData: false // marked line of error
        success: function(response) {
            $(addonUploadFormMessages).removeClass('error');
            $(addonUploadFormMessages).addClass('success');

            $(addonUploadFormMessages).html(response);

            $('#addonTitle').val('');
            $('#addonDescription').val('');
            $('#addonFile').val('');
            grecaptcha.reset();
        },
        error: function(data) {
            $(addonUploadFormMessages).removeClass('success');
            $(addonUploadFormMessages).addClass('error');
            grecaptcha.reset();

            if (data.responseText !== '') {
                $(addonUploadFormMessages).html(data.responseText);
            } else {
                $(addonUploadFormMessages).html('<div class="alert alert-danger fade in out"><a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a><strong>Error!</strong> An error occured and your message could not be sent.</div>');
            }
        }
    });
});

这是我的代码,并且在标记的行上有一个缺失,这个代码工作正常,除了不显示页面上的请求,它只是带我到ajax网址,但如果我把它,在它做当我提交表格时没有错误,没有任何错误。

谢谢Ryan

2 个答案:

答案 0 :(得分:1)

这一行可能会导致错误:

xhr: function() {  },

没有xhr对象,您无法发送ajax请求。 所以请忽略这一行。

此外,您需要将“,”放在标记的行中。 您的网址会打开,因为如果您省略“,”,该函数将抛出错误,您的e.preventDefault()将无效。

我也会忽略这些界限:

contentType: false,
processData: false 

你应该逃避这一行中的html内容:

$(addonUploadFormMessages).html(data.responseText);

希望这有帮助。

答案 1 :(得分:0)

我修复了它有2个版本的jquery runnning with noconflict,它们在1.11和1.4之间,1.4在此之前最后加载。所以我不得不将我的冲突改为var jq1 = jQuery.noConflict(true);,然后将我的ajax代码更改为

var addonUploadForm = $('#addonUploadForm');

var addonUploadFormMessages = $('#addonUploadForm-messages');

$(addonUploadForm).submit(function(e) {
    e.preventDefault();

    var formData = new FormData($('#addonUploadForm')[0]);

    jq1.ajax($(addonUploadForm).attr('action'), {
        type: 'POST',
        url: $(addonUploadForm).attr('action'),
        data: formData,
        cache: false,
        contentType: false,
        processData: false,
        success: function(response) {
            $(addonUploadFormMessages).removeClass('error');
            $(addonUploadFormMessages).addClass('success');

            $(addonUploadFormMessages).html(response);

            $('#addonTitle').val('');
            $('#addonDescription').val('');
            $('#addonFile').val('');
            grecaptcha.reset();
        },
        error: function(data) {
            $(addonUploadFormMessages).removeClass('success');
            $(addonUploadFormMessages).addClass('error');
            grecaptcha.reset();

            if (data.responseText !== '') {
                $(addonUploadFormMessages).html(data.responseText);
            } else {
                $(addonUploadFormMessages).html('<div class="alert alert-danger fade in out"><a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a><strong>Error!</strong> An error occured and your message could not be sent.</div>');
            }
        }
    });
});