1

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

我找到了许多关于为上传、PHP 文件创建进度条以及对其进行样式设置的教程,但我还没有找到任何用于监控已读取和处理的 XML 文件百分比的内容。我一直试图让我的代码与本教程一起工作,但没有成功。

我简单的 AJAX 调用:

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

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

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

如果我以错误的方式处理这个问题,我也愿意接受任何其他建议。如果这是一个简单的问题,再次抱歉,但感谢您的任何回复。

4

2 回答 2

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 中工作。

于 2013-04-15T19:13:08.420 回答
1

如果您可以迁移到 websockets,我认为您将获得更多在单个线程中管理数据传输的能力。

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

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

基本上,轮询服务器并询问它在传输中走了多远,然后将其报告给用户。因此,您将拥有大型 ajax 请求,同时轮询不同的小型端点。您的服务器将上传进度作为用户会话的一部分。

于 2013-04-15T19:14:10.320 回答