【问题标题】:Show progress of a script called through ajax in a div在 div 中显示通过 ajax 调用的脚本的进度
【发布时间】:2012-05-23 07:50:38
【问题描述】:

我正在使用 ajax 调用脚本。我想在页面上显示脚本执行的进度。

我的意思是我想在 div 中逐步显示以下消息:

//after execution of section 1
Section 1 of script executed successfully.
//after execution of section 2
Section 2 of script executed successfully. 
//after execution of last section
Script execution complete.

我使用的方法是仅在脚本完全执行后才显示所有 3 条消息。

var script1_ajax = new XMLHttpRequest();

    script1_ajax.onreadystatechange=function() {            
        if (script1_ajax.readyState==4 && script1_ajax.status==200) {

            document.getElementById('result').innerHTML = script1_ajax.responseText;

        }
    }

我不想将我的脚本分成多个脚本。

请建议如何做到这一点。

【问题讨论】:

  • 你在服务器上用什么? AJAX 通常只会在页面/脚本完成加载时返回 responesText(您通常不能按照您的建议进行操作)。
  • @jezternz:实际上,您可以通常这样做。
  • 真的!抱歉,我的印象是长轮询只是意味着服务器在完成请求之前不会保持 ajax 连接打开,但是在进一步阅读后我更好地理解它,干杯!

标签: javascript ajax progress


【解决方案1】:

有多种技术可以使与服务器的连接保持打开状态并从该连接获取临时更新,这些技术统称为“comet”,which is described here。长轮询、带有分块的隐藏 iframe、某些浏览器上的 XHR 等。其中一个或多个可能对您有用。请注意,不同的技术适用于不同的浏览器,每种技术都有优点和缺点。

几年后情况会好很多,那时我们可以依靠web sockets,但目前这不是一个选择,除非您可以将您的网站/应用程序的使用限制为the few browsers that currently support them

【讨论】:

    猜你喜欢
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2012-07-03
    • 1970-01-01
    相关资源
    最近更新 更多