我正在为较旧的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对象。例如:
此对象不包含.abort()方法,并导致找不到"方法"错误。那我怎么能中止这个电话呢?
jQuery版本是1.2.6,无法更新。该解决方案必须与浏览器兼容。
答案 0 :(得分:2)
工作解决方案可能如下(我碰巧与Drupal 6,Jquery 1.2有同样的问题):
{{1}}
在这种情况下,您只需检查您是否拥有正确的XMLHttpRequest,如果是,则按正常方式执行。如果你不这样做,你只需中止所有正在运行的请求。
它并不完美,但大约90%的时间都有效。