jQuery-File-Upload:处理服务器错误

时间:2014-04-11 17:35:01

标签: error-handling jquery-file-upload blueimp

我正在尝试为blueimp的jQuery-File-Upload实现错误处理。对于我可以在服务器上捕获并将其包装到JSON对象中的错误,很容易实现。但是,如果服务器出现PHP错误并且消息显示为标准PHP消息,该怎么办?我尝试使用fail-callback处理它:

jQuery('#fileupload').fileupload({
    fail: function (ev, data) {
        if (data.jqXHR) {
            alert('Server-error:\n\n' + data.jqXHR.responseText); 
        }
    }, 
    otherOptions
});

它正常工作,但如果按取消按钮删除图像,也会触发回调。所以我添加了if和data.jqXHR来区分服务器错误和取消按钮按下。但是,如果按下取消按钮,则不再从列表中删除图像。

任何想法是如何为意外的服务器错误实现这样的错误处理?

谢谢,Ben

2 个答案:

答案 0 :(得分:3)

我找到了答案。我需要使用

.bind('fileuploadfail', function (e, data) {

而不是直接覆盖失败函数。

答案 1 :(得分:1)

提问者提供的答案对我不起作用。我使用一个变量来指示失败是否是由用户触发的。

add: function (e, data) {
        if (data.autoUpload || (data.autoUpload !== false && $(this).fileupload('option', 'autoUpload'))) {
            $.each(data.files, function (index, file) {
                // UPLOAD INDICATOR
                // file heading
                single_upload = "<b class='file_upload'>"+file.name+"</b>";
                // cancel btn
                single_upload += "<a class='remove_upload'> || Cancel!</a>";
                // contain
                single_upload = "<div class='upload'>"+single_upload+"</div>";
                // create and display node related to specific upload
                data.context = $(single_upload).appendTo(document.body);

                // CANCEL BTN LISTENER
                $(data.context).find(".remove_upload").click(function() {
                    // prevent displaying of server error
                    // (prevent fileupload "fail" event trigger)
                    fileupload_userCancelledUpload = true;
                    jqXHR.abort();
                    data.context.remove();
                })
            });
            var jqXHR;
            data.process().done(function () {
                jqXHR = data.submit();
            });
        }
    },

fail: function (e, data) {
        if (!fileupload_userCancelledUpload) {
            // catches server errors (not validation errors), such as 413
            handleUploadFailure(data.context, " Server error: "+$(data.jqXHR.responseText).filter("title").text());
        }
        fileupload_userCancelledUpload = false;
    }