如何使用AJAX / jQuery创建用于下载XML内容的进度条?

时间:2013-04-15 19:08:24

标签: javascript jquery ajax html5

如果这是一个相当简单的答案我道歉,但我已经坚持了一段时间。目前我有一个XML文件,用户可以通过多种方式添加图像,音频文件和文本。如果文件变大,我希望页面需要进度条。

我找到了许多关于为上传,PHP文件和样式创建进度条的教程,但我还没有找到任何用于监视已读取和处理的XML文件百分比的内容。我一直试图让我的代码与this tutorial一起使用,但没有运气。

我简单的AJAX调用:

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: xmlTitle,
        dataType: "xml",
        success: parseXML
    });
});

parseXML是我读取XML文件的函数,然后在HTML上正确显示它。

基本上我希望让代码自动显示进度条,并且在成功时使进度条消失并显示内容。

如果我以错误的方式接近这一点,我也会打开任何其他建议。如果这是一个简单的问题,请再次抱歉,但感谢您的回复。

2 个答案:

答案 0 :(得分:2)

这应该足够了:

$(document).ready(function() {
    showProgressBar();
    $.ajax({
        type: "GET",
        url: xmlTitle,
        dataType: "xml",
        success: parseXML
    });
    function parseXML(xml){
        hideProgressBar();
        ...
    }
});

如果你想用上传的实际进度来实际更新进度条,你将不得不使用xhr.upload.progress事件和xhr.progress事件,这两个事件都没有在jQuery中实现,因为那里没有办法使它们在IE< 10。

中工作

答案 1 :(得分:1)

如果您可以转移到websockets,我认为您可以在单个线程中管理数据传输。

如果您想要传统的ajax,我认为您需要一种类似于通常用于上传进度的方法:

http://phpmaster.com/tracking-upload-progress-with-php-and-javascript/

基本上,轮询服务器并询问它在传输中的距离,然后将其报告给用户。因此,您可以在同时轮询不同的小端点时获得大量的ajax请求。您的服务器将上传进度作为用户会话的一部分。