我正在使用jquery file upload,它就像一个魅力。但是当我在没有任何文件的情况下调用send方法时出现错误。我正在使用send
方法,它允许我异步提交文件。在doc(ctrl-f send)上,可以说这个方法返回一个jqXHR
对象,以后可以用来回调fail
回调。
当我使用chrome调试器进行调试时,我可以看到调用了回调fail
,但所有参数(jqXHR, textStatus, errorThrown)
都是undefined
。所以我在控制台中收到此错误:undefined undefined undefined
。
我已经在jsfiddle找到了这个错误,只需点击按钮send by fileupload send api
,您就会在控制台中看到错误(之前通过F12打开)。
为什么参数未定义? 我认为这是一个错误......
这是javascript:
$(document).ready(function () {
var filesList = []
var elem = $("form")
file_upload = elem.fileupload({
autoUpload: false,
fileInput: $("input:file"),
}).on("fileuploadadd", function (e, data) {
filesList.push(data.files[0])
});
$("button").click(function () {
// fix
if (filesList.length > 0) {
file_upload.fileupload(
'send',
{
files: filesList
}
)
.fail(function (jqXHR, textStatus, errorThrown) {
console.error(jqXHR, textStatus, errorThrown);
})
}
})
});
编辑:我想在尝试上传文件之前需要检查一下文件的数量。调用错误函数,但是当我检查调试器时,我没有看到任何对服务器的请求。所以我猜这是一个错误,因为失败的回调不会被调用。
答案 0 :(得分:1)
我认为问题是即使文件列表为空,也要调用方法send。
您无法访问jqXHR属性,因为没有触发任何AJAX请求。
如果根据列表的长度添加控件,则只有在AJAX请求发生错误时才会调用错误回调,因此您将能够检索有关错误的信息。