簡體   English   中英

不刷新頁面更新進度條

[英]Update progress bar without refreshing page

我有兩個 php 頁面。 page.php 和 loader.php。 Loader.php 從 mysql 中提取數據以填充進度條,而 page.php 包含一個每秒刷新 loader.php 的函數。 它有效,但它相當丑陋,因為您可以看到每秒重置 css 動畫。

我更喜歡 page.php 中的加載欄 html 以及我的頁面的所有其他 html 但是 A) 我如何將 vars 從 loader.php 獲取到 page.php 和 B) 我如何更新 div(或任何對象)在 page.php 上而不刷新頁面?

我研究了 AJAX,它似乎可以做我想做的事,但我對 AJAX 和一般編程還不熟悉。 我已經為它開始(有點)工作感到自豪。

頁面.php

<script>
var myTimer = null;

//executes a script that fills mysql with data
function fileExec() {
        $.ajax({
            url:"fileexec.php",
            type: "post"
        });
    startRefresh();
}

//Shows progress bar
function refreshData() {
  $('#container').load('loader.php');
}

function stopRefresh() {
  clearInterval(myTimer);
}

function startRefresh() {
 myTimer = setInterval(refreshData, 1000);
}

</script>

加載器.php

<?php
//Code not shown sets up connection to mysql to pull progress
$progress1 = $row['progress'];
$script1 = $row['script'];

//Stop refresh after shell script has finished
if ($script1 == "stop") {
    echo "<script>";
    echo "stopRefresh();";
    echo "</script>";
}
?>

//Update progress bar with variable
<html>
  <body>
    <div class="progress-bar-wrapper">
        <div class="progress-bar">
            <div id="myBar" class="progress-bar-fill in-progress" style="height:10px;width:<?php echo $progress1; ?>%"></div>
         </div>
    </div>
  </body>
</html>

使用 js 更新它:

$.post("loader.php", {
        function: "getProgress"
        }, function(data) {
            progress = JSON.parse(data);
            //use progress to change your bar with js
        });

在 php 中:

switch ($_POST['function']) {
    case 'getProgress':
        getProgress();
    break;
}
function getProgress() {
    //get the progress state
    echo json_encode($progress);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM