使用带有send方法的jquery-file-upload,为什么错误回调中的参数未定义?

时间:2015-08-03 14:25:52

标签: jquery ajax

我正在使用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);
          })
        }
    })
});
编辑:我想在尝试上传文件之前需要检查一下文件的数量。调用错误函数,但是当我检查调试器时,我没有看到任何对服务器的请求。所以我猜这是一个错误,因为失败的回调不会被调用。

1 个答案:

答案 0 :(得分:1)

我认为问题是即使文件列表为空,也要调用方法send。

您无法访问jqXHR属性,因为没有触发任何AJAX请求。

如果根据列表的长度添加控件,则只有在AJAX请求发生错误时才会调用错误回调,因此您将能够检索有关错误的信息。