我正在使用https://github.com/blueimp/jQuery-File-Upload
它在现代浏览器中使用XHR文件上传,在oldIEs中使用隐藏的iframe上传(8,9)。
当文件验证失败时,服务器返回4xx状态代码(错误/失败)。
$('#fileupload').fileupload({
url: url,
dataType: 'json',
done: function (e, data) {
console.log("done")
},
fail: function (e, data) {
console.log("fail")
}
})
然而,在oldIE中,即使我发送4xx状态代码,也会调用完成回调。 有没有办法让它调用失败回调(https://github.com/blueimp/jQuery-File-Upload/wiki/Options#fail)并读取响应正文或状态代码?
我认为可能需要使用隐藏的iframe方法上传文件,但我在文档中找不到任何特定内容。
答案 0 :(得分:4)
我应该检查Frequently Asked Questions
// By default, the iFrame Transport handles all responses as success,
// so we override the iFrame to JSON converter to handle error responses:
$.ajaxSetup({
converters: {
'iframe json': function (iframe) {
var result = iframe && $.parseJSON($(iframe[0].body).text());
if (result.error) {
// Handling JSON responses with error property:
// {"error": "Upload failed"}
throw result.error;
}
return result;
}
}
});