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

标签 jquery ajax

我正在使用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/

相关文章:

android - 使用 jquery 查找键盘可见

Jquery 包含的库

javascript - 传递 json 并获取结果取决于 2 行 - javascript

java - 将 JSON 从 ajax 发布到 Struts2 Action

asp.net - 设置显示为 false 时,Telerik 控件会向下移动 asp 面板

javascript - Facebook 分享插件按钮未分享正确的网址

javascript - 用jquery比较开始时间和结束时间?

javascript - 将 jQueryFileUpload 库与 require.js 一起使用

javascript - 如何使 ajax 与数据库交互以便发布、获取和删除?

javascript - AJAX:在没有页面刷新的情况下提交表单只能工作一次