我正在尝试为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
答案 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;
}