【问题标题】:How to change jQuery progressbar status on changed PHP variable? [duplicate]如何在更改的 PHP 变量上更改 jQuery 进度条状态? [复制]
【发布时间】:2013-04-19 18:43:48
【问题描述】:

想法是在 PHP 变量更改时更新进度条值:

 <script>
    $(function() {
       $( "#progressbar" ).progressbar({
          value: <?php echo $_SESSION['value'] ?>
       });
    });
 </script>

我试过了:

    <?php 
        $_SESSION['value'] = 10; 
            sleep(2);
        $_SESSION['value'] = 30;
            sleep(2);
        $_SESSION['value'] = 50;
            sleep(2);
        $_SESSION['value'] = 70;
            sleep(2);
        $_SESSION['value'] = 90;        
    ?>

但进度条仅设置为最后一个变量90。我希望它随着变量值的变化而连续更新五次。

是否可以用 jQuery 和 PHP 做到这一点?

【问题讨论】:

    标签: php jquery-ui progress-bar


    【解决方案1】:

    这是可能的,但仅使用 AJAX,因为 javascript 无权访问 PHP 会话。

    javascript 仅在 PHP 文件完成执行后运行,这就是为什么您只会看到它更新为最后一个值。

    JS:

    setInterval(function() {
        $.get("currentProgress.php", function(data) {
            $("#progressbar").progressbar({
              value: data
            });
        });
    }, 1000); // updates every second
    

    PHP 文件:

    <?php
        // work out the current progress of whatever you're checking on
        echo $value;
    ?>
    

    更新:也许这更符合您的要求:http://w3shaman.com/article/php-progress-bar-script - 可以轻松修改以包含 jQuery 进度条。

    【讨论】:

    • 我会使用会话吗? echo $_SESSION['value'];
    • 是的,在 php 文件中你可以写 echo $_SESSION['value']; 并且它会更新。但是,它不适用于您当前的 php 文件,因为它仍然只会打印最终值 (90)。
    • 我创建了文件 currentProgress.php 并添加了代码 &lt;?php session_start(); echo $_SESSION['value']; ?&gt; 但进度条仍然没有更新,可能是什么问题?
    • 它没有更新,因为您必须更改$_SESSION['value']; 的值。显示进度的进度条是什么?
    • 但我正在bar.php 更新会话
    【解决方案2】:

    $_SESSION 只存在于服务器端,因此在您的浏览器收到响应之前,它会经历所有五个阶段。将传输的值是90。

    如果您想监控服务器端进程,您将不得不使用不同的方法,例如通过 ajax。

    【讨论】:

      猜你喜欢
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 2023-03-14
      • 2015-05-16
      • 1970-01-01
      相关资源
      最近更新 更多