仅在处理完所有文件后才发送错误或成功消息

时间:2014-02-18 01:36:02

标签: jquery file-upload blueimp

我只是在处理完所有文件后才尝试在blueimp中发送成功或错误消息...否则,第一个文件将发送成功消息,如果另一个文件有错误,它也会触发错误

这是我的代码:

// Initialize the jQuery File Upload widget:
jQuery('#fileupload').fileupload({
    url: url, 
    done: function (e, data) {
        var response = jQuery.parseJSON( data.jqXHR.responseText );
        var error = response.files[0].error;

        if(error) {
            jQuery('#error').show();
            jQuery('#error').append('<p><strong>Error given:</strong> '+error+'</p>');
        } else {
            jQuery('#success').show();  
        }
    },
});

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

SingleFileUploads选项

如果您希望在单个请求中上传文件,可以使用following optionsingleFileUploads:false,

这样,每个文件只会触发1次完成回调。

停止回拨

创建一个全局数组:

var temp = new Array();

然后在完成失败始终回调中,您应该使用文件名和成功状态填充数组:

done: function(e, data) {
    $.each(data.files, function(i, f) {
        temp.push({"name": f.name, "succeed": data.textStatus})
    })
},

最后,您可以将每个成功状态检查到 stop 回调中,该回调在每个文件完成时调用:

stop: function(e, data) {
    $.each(temp, function(i, f) {
        console.log(f.name)
        console.log(f.succeed)
    });
    // Don't forget to empty your array to allow other downoal
    temp= new Array();
},

答案 1 :(得分:1)

在github上寻求帮助时,blueimp jQuery-File-Upload的创建者Sebastian Tschan建议我尝试使用fileuploadstop方法而不是singleFileUploads ...但是,没有一个blueimp { {1}}方法有一个stop参数,以下是我能够克服这个问题的方法(感谢开发人员朋友的帮助):

<强>使用Javascript:

data

效果很好!希望它可以帮助某人。