如何中止特定文件的上传!我将jqXHR附加到上下文的data属性,然后我调用abourtUpload函数来搜索data属性,然后尝试中止它!但它没有用!
function abortUpload (e) {
e.preventDefault();
var template = $(e.currentTarget).closest('.template-upload'),
data = template.data('data') || {};
console.log(data); // returns [Object object]
data.jqXHR.abort(); // Cannot call method 'abort' of undefined
}
// Method of fileupload
add: function(e, data) {
data.context = $(tmpl("template-upload", file)).attr('data-data', { jqXHR: data.submit() } );
$('#fileupload').append(data.context);
data.context.find('.cancel').click( abortUpload );
return data.submit();
}
任何想法的人? 米格尔。
答案 0 :(得分:0)
您正在尝试将jqXHR对象存储为HTML数据属性值,这是不可能的 您只能将对象存储在可以序列化为JSON的HTML数据属性中。
你可以做的是使用jQuery的.data()方法来存储值,它允许存储任意对象。
但是,由于您的所有代码都采用相同的方法,因此您无需执行任何操作,因为您只需使用本地变量即可访问jqXHR对象并取消上传。 您也不需要设置data.context,因为它仅用于设置jQuery.ajax请求的上下文。
因此,以下代码段应该可以帮助您实现目标:
var jqXHR = data.submit(),
node = $(tmpl("template-upload", file)).appendTo('#fileupload');
node.find('.cancel').click(function (e) {
e.preventDefault();
jqXHR.abort();
});