使用jQuery 1.2中止fileupload

时间:2015-06-01 13:44:14

标签: jquery ajax file-upload drupal-6

我正在为较旧的Drupal 6网站开发模块。当前的任务是中止自定义海报的预览生成。为此,用户可以上传他的徽标并更改一些文本。提交包含这些信息的表单,并通过ahah显示预览。

根据几个教程,我必须这样做:

var xhrPool = [];
$(document).ajaxSend(function(e, jqXHR, options){
  console.log(jqXHR);
  xhrPool.push(jqXHR);
});
$(document).ajaxComplete(function(e, jqXHR, options) {
  xhrPool = $.grep(xhrPool, function(x){return x!=jqXHR});
});

以及后来:

function abortAll() {
  hideEverything();
  for (var i = xhrPool.length - 1; i >= 0; i--) {
    xhrPool[i].abort();
  };
}

如果我在除fileupload之外的所有字段中输入信息,则日志返回一个有效的XmlHttpRequest对象,该对象可以正常中止。但是如果我上传文件,.ajaxSend不包含有效的XmlHttpRequest对象。例如:

Returned object

此对象不包含.abort()方法,并导致找不到"方法"错误。那我怎么能中止这个电话呢?

jQuery版本是1.2.6,无法更新。该解决方案必须与浏览器兼容。

1 个答案:

答案 0 :(得分:2)

工作解决方案可能如下(我碰巧与Drupal 6,Jquery 1.2有同样的问题):

{{1}}

在这种情况下,您只需检查您是否拥有正确的XMLHttpRequest,如果是,则按正常方式执行。如果你不这样做,你只需中止所有正在运行的请求。

它并不完美,但大约90%的时间都有效。