jQuery $.ajax 扩展 XDomainRequest onprogress

3

简短版:

我想让这个这个一起工作:

详细版:

我想创建一个jQuery扩展,将进度方法添加到$.ajax对象,并且可以与IE8和IE9的XDomainRequest对象一起使用。

目前,使用上述插件,我只能为XMLHttpRequest对象定义进度事件回调处理程序。

但是,XDomainRequest还提供了onprogress事件。我基本上需要一个XDomainRequest的包装器。例如,progressEvent.length应对应于xdr.responseText.length。

如果有任何关于如何开始的建议,我将不胜感激。

1个回答

4

好的,我解决了这个问题。最后我fork了ajaxHooks,通过一个ajax传输器来实现XDomainRequest。

我添加了对一个名为“progress”的onprogress事件回调的支持,这可以用原始的ajax对象定义。

根据W3C标准,progressEvent.lengthComputable=false,因为我们无法获取内容长度,所以progressEvent.total=0;

请查看以下示例:

$(document).ready(function(){

    var download_url = YOUR_URL;

    $.ajax({

        url: download_url,
        cache: false,
        progress: function(jqXHR, progressEvent) {

            console.log(progressEvent.loaded);

        }
    })
});

在这里查看我的ajaxHooks分支


非常好,你能处理你得到的响应部分吗?progressEvent中包含什么? - Edmondo
进度事件被定义为var progressEvent = {lengthComputable: false, loaded: 0, total: 0};。唯一会发生变化的字段是'loaded',因为内容长度是不可计算的(因此total=0)。 - Rowan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接