jQuery ajax完成函数不用jQuery文件上传触发

时间:2018-01-18 05:59:48

标签: jquery ajax

我正在使用上传1个文件和formdata的jQuery文件上传。 文件和数据在后端成功上传,但我没有在完成功能内得到响应。后端是Java,Spring控制器,它返回ModelAndView的对象。在浏览器中我得到状态200 OK但为什么我的ajax请求的完成功能没有触发?  期待所有人的帮助..

以下是我的代码:

$("#uploadMail").fileupload({
    maxNumberOfFiles: 1,
    add: function(e, data) {
        cleanErrors();
        var result = data.files;
        result.forEach(function(file) {

            console.log(file.name);
            $("#fileName").val(file.name);
        });
        $(".saveFile").off('click');
        $(".saveFile").on('click', function(event) {
            cleanErrors();
            event.preventDefault();
            var mailCategory = $("#mailCategory").val();
            data.submit(function(event) {
                $.ajax({
                    url: contextPath + '/mail/upload.sf?mailCategory' + mailCategory,
                    type: "POST",
                    dataType: "text",
                    data: data

                }).done(function(data, textStatus, jqXHR) {
                    alert("hii" + textStatus);
                    alert(data);
                }).fail(function() {
                    alert("done2");
                })

            });



        });
        hideWait();
    }

});

jQuery中的初学者和javascript为如果有的错误道歉。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您使用的插件取决于闪存。此上传功能要求在浏览器中安装Flash插件以进行上传功能。我强烈建议使用带有jquery的Formdata。

见下面的例子

<强>制剂

您可以将整个表单提供给FormData()进行处理

var form = $('form')[0]; // You need to use standard javascript object here
var formData = new FormData(form);

或指定FormData()

的确切数据
var formData = new FormData();
formData.append('section', 'general');
formData.append('action', 'previewImg');
// Attach file
formData.append('image', $('input[type=file]')[0].files[0]); 

发送表格

使用jquery的Ajax请求将如下所示:

$.ajax({
    url: 'Your url here',
    data: formData,
    type: 'POST',
    contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+)
    processData: false, // NEEDED, DON'T OMIT THIS
    // ... Other options like success and etc
});

在此之后,它将发送ajax请求,就像你提交带有enctype =&#34; multipart / form-data&#34;

的常规表单一样

更新:如果没有类型,此请求将无法运行:&#34; POST&#34;在选项中,导致所有文件必须通过POST请求发送。

希望这会有所帮助。感谢