如何取消由 ajaxSubmit() 在 jQuery 中启动的文件上传
How do I cancel a file upload started by ajaxSubmit() in jQuery?
>我有类似于以下内容的代码:
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;
});
};
有没有办法使用表单的重置按钮来取消上传过程?还是我必须导航到当前页面(刷新(才能停止所有内容?
我尝试创建一个由 UploadWidget 对象存储的变量来存储 jqXHR 值(并调用 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 月添加;请参阅问题 221。(Shukshin.Ivan的回答是第一个指出这一点的。
beforeSend
回调(适用于 2012 年 12 月之前的 jQuery Form 版本(
除了 jQuery 表单插件站点中列出的选项外,ajaxForm()
和 ajaxSubmit()
还将采用任何 jQuery.ajax(( 选项。 其中一个选项是beforeSend
回调,回调签名为 beforeSend(jqXHR, settings)
。
因此,指定一个beforeSend
回调函数,jqXHR 对象将作为该回调的第一个参数传入。 保存该 jqXHR 对象,然后您可以在要中止上载时对该 jqXHR 对象调用abort()
。
自 2012 年 12 月起,可以直接访问 xhr:
var form = $('#myForm').ajaxSubmit({ ... });
var xhr = form.data('jqxhr');
....
$('#cancel').on('click', function(){
xhr.abort();
});
SRC - https://github.com/malsup/form/issues/221
你可以这样使用:
var myForm = null;
myForm = $('#myForm').ajaxSubmit({
url: ajaxUrl,
beforeSubmit : function() {
if(myForm != null)
myForm.data('jqxhr').abort();
},
...
});
这将停止您以前的 ajaxSubmit 请求。
尝试
window.stop();
模仿正在按下的停止按钮。不完全确定IE是否喜欢它。对于IE,您可以尝试:
document.execCommand('Stop');
- Meteor:在启动时将html注入客户端文件
- 从IE中的不同元素调用时,文件输入控件未正确启动
- 如何将.json文件作为参数导入.js文件并使用命令行启动它
- 在本地启动HTML文件
- Visual Studio 2015 NodeJS/Typescript 覆盖节点启动文件
- Nodejs:在节点服务器启动时运行一个js文件
- JQuery启动文件下载,然后运行一个函数
- Javascript中的Ajax无法正确启动php文件
- Cordova创建的文件不会显示在Windows资源管理器中,除非重新启动设备
- 在 .Net ApiController 中启动文件下载
- AngularJs 2 在将所有打字稿文件输出生成到单个 js 文件时无法启动
- 为什么 Meteor 在使用“”启动 HTML 文件时不渲染任何内容
- 如何在没有window.open的情况下从Javascript启动PHP文件
- Javascript:通过开机自检启动文件下载和路由文件
- angular Directive-文件读取器未启动.文件加载时
- 通过ajax(chrome)在vanillajs中以编程方式启动文件输入点击
- 我如何让SocketCluster重新启动文件更改
- 直到应用程序重新启动(文件API)才显示对文件的修改
- Node.js包启动文件不工作
- 在JavaScript中,可以通过编程方式启动文件浏览器对话框