javascript - 如何取消由 jQuery 中的 ajaxSubmit() 启动的文件上传?

标签 javascript jquery ajax forms file-upload

我有类似下面的代码:

UploadWidget.prototype.setup_form_handling = function() {
    var _upload_widget = this;
    $('form#uploader')
    .unbind('trigger-submit-form')  // This might be our company's own method
    .bind('trigger-submit-form', function() {
        var $form = $(this);
        $form.ajaxSubmit({
            dataType: 'json',
            success: function(data, status, xhr, form) {
                // ...
            },
            error: function(xhr, status, errorThrown) {
                // ...
            }
        });
        return false;
    });
};

有没有办法使用表单的重置按钮来取消上传过程?或者我是否必须导航到当前页面(刷新)才能停止一切?

我尝试创建一个由存储 jqXHR 值的 UploadWidget 对象存储的变量(并调用 var _upload_widget.jqXHR = $form.ajaxSubmit({ ... });),但我没有不要认为我做对了。

最佳答案

jQuery.ajax()不同,jQuery表单插件的ajaxForm()ajaxSubmit()不返回jqXHR对象。不过,还有其他方法可以获取 jqXHR 对象:

data() 表单对象上的方法(最简单的方法)

ajaxSubmit() 返回表单对象。您可以在此表单对象上调用 data() 方法来获取 XHR 对象:

var form = $('#myForm').ajaxSubmit({ ... });
var xhr = form.data('jqxhr');

然后在您想中止上传时调用xhr.abort()

此功能于 2012 年 12 月添加;见issue 221 . (shukshin.ivan 的回答是第一个指出这一点的人。)

beforeSend 回调(对于 2012 年 12 月之前的 jQuery Form 版本)

除了options listed in the jQuery form plugin site , ajaxForm()ajaxSubmit() 也将采用任何 jQuery.ajax() options .其中一个选项是 beforeSend 回调,回调签名是 beforeSend(jqXHR, settings)

因此,指定一个beforeSend 回调函数,jqXHR 对象将作为该回调的第一个参数传入。保存该 jqXHR 对象,然后您可以在要中止上传时对该 jqXHR 对象调用 abort()

关于javascript - 如何取消由 jQuery 中的 ajaxSubmit() 启动的文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10601841/

相关文章:

javascript - 如何自动移动滚动条

javascript - 将鼠标悬停在链接上以影响另一个链接

jquery - Pylons 和 NodeJS/Comet

javascript - 防止 ajax 提交空白输入和选择

javascript - 简单的ajax调用,没有语法错误。还是行不通

javascript - 如何将 React 应用程序创建为服务/包并将其导入另一个应用程序的 'package.json'

javascript - Django - 根据下拉菜单更改发送表单的路由

javascript - 当幻灯片处于事件状态时在 html 元素中设置数据属性

javascript - Controller 不是函数,在全局定义 Controller 时未定义

jquery - 检索受 "rowspan"影响的行的列索引的最有效方法是什么?