0

如何中止特定文件的上传!我将 jqXHR 附加到上下文的数据属性,然后调用 abourtUpload 函数来搜索数据属性,然后尝试中止它!但它不工作!

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(); 
  }

有什么想法吗?米格尔。

4

1 回答 1

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();
});
于 2013-04-05T09:41:11.917 回答