【问题标题】:Adding information to a page at the end of a loop to show progress在循环结束时向页面添加信息以显示进度
【发布时间】:2011-06-07 07:15:54
【问题描述】:

我有一个循环,它贯穿文本区域的行并循环处理每一行。

此时页面只是保持冻结状态,直到所有数据都处理完毕。

我怎样才能做到这一点,以便一旦线路完成处理(当它循环返回时),它会添加例如“第 1 行已处理”“第 2 行已处理”等,以便用户可以看到它正在工作。

我正在使用 PHP,并且想使用 jquery,因为我已经在网站上使用了。

谢谢

【问题讨论】:

  • 你需要详细说明...
  • 该任务基本上接受一个 URL 并 ping 它并返回其 HTTP 状态代码。我希望能够通过在处理它们时显示每个 url 和状态代码来查看它的工作情况。

标签: php javascript jquery ajax


【解决方案1】:

如果您使用 ajax 处理您的请求,在所有处理完成之前它不会生成任何反馈,因此您可以:

  1. 使用@Silver Light 的解决方案,将请求拆分为多个请求(有缺点);
  2. 满足于模式叠加(使页面变暗)和显示旋转轮以向用户显示它正在工作之类的东西。

【讨论】:

    【解决方案2】:

    由于您没有指定任何细节,我只是猜测您可以做什么:

    $(document).ready(function(){
        //get the textarea value
        var value = $('textarea#my_textarea').val();
        //split it into lines
        var lines = value.split('\n');
        //for every line
        for(var i = 0; i < lines.length; i++){
            //call line_proccesser.php passing a line to it
            $.post(
                 'line_proccesser.php',
                 {line:lines[i]},
                 function(){
                     //when script has worked, printing status info
                     $("#info").append('Line ' + (i+1) + 'processed<br />');
                 }
            );
        }
    });
    

    【讨论】:

    • +1 很好的答案,但是,您可能想补充一点,为每一行发出 ajax 请求会进一步减慢速度并导致大量额外流量(而不是一个请求)。
    • @jeroen 谢谢。是的,它会很慢,但由于我们不知道任务细节,所以很难猜测它是否重要。
    • 确实如此。我可能只是在不提供具体进度细节的情况下表明它正在工作。
    【解决方案3】:

    很抱歉第一次没有正确阅读您的问题..

    也许这会有所帮助Iterating through a PHP array in jQuery?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-30
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      相关资源
      最近更新 更多