我正在使用jquery file upload它就像一个魅力。但是当我在没有任何文件的情况下调用发送方法时出现错误。我正在使用 send
方法,它允许我异步提交文件。关于doc (ctrl-f send) 据说该方法返回一个 jqXHR
对象,稍后可用于回调,例如 fail
回调。
当我使用 chrome 调试器进行调试时,我可以看到回调 fail
被调用,但所有参数 (jqXHR, textStatus, errorThrown)
都是 undefined
。所以我在控制台中收到此错误:undefined undefined undefined
。
我做了这个jsfiddle在您可以看到错误的地方,只需单击按钮通过 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);
})
}
})
});
编辑:我想我需要在尝试上传文件之前检查文件的数量。错误函数被调用,但是当我检查调试器时,我没有看到任何对服务器的请求。所以我猜这是一个错误,因为不应该调用失败回调。
最佳答案
我认为问题在于,即使您的文件列表为空,您也会调用 send 方法。
您无法访问 jqXHR 属性,因为没有触发任何 AJAX 请求。
如果您根据列表的长度添加控件,则仅当 AJAX 请求发生错误时才会调用错误回调,因此您将能够检索有关错误的信息。
关于jquery - 使用 jquery-file-upload 和 send 方法,为什么错误回调中的参数未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31789869/