使用一个PHP脚本同时刷新两个DIV& jQuery加载

时间:2014-09-17 15:59:50

标签: php jquery arrays json

我要做的是:1)显示在一个DIV中进行的最后一次备份的实时计数                2)随着时间的推移改变另一个DIV的颜色以及其中的文本

我是怎么做的:通过使用Jquery加载刷新元素。

到目前为止成功:我已成功显示时间计数,但无法理解如何更改其他DIV的文本和颜色。

我在想,如果某种方式可以在每次加载时从脚本中传递颜色值,那么它可能会起作用,但我不确定我的方法和我对任务的想法是否正确。 我看了整个网络,但没有任何东西派上用场。

我真的很感激一些帮助。 也欢迎对代码进行改进。 :)

提前感谢..

PHP

<?php
$dir="DB_Backups/";
$file= array();
$file = scandir($dir, 1);
if ('.' === $file || '..' === $file)
    continue;
$newest_file=$dir.$file[0];
if(is_file($newest_file)){

$time=time()-filemtime($newest_file);

if($time<2){
    echo "Last Backup just now";
}

if($time>=2 && $time<60){
    echo "Last Backup few seconds ago";
}
else
if($time>=60 && $time<2*60){
echo "Last Backup a minute ago";
}
else
if($time>=2*60 && $time<3600){
    echo "Last Backup few minutes ago";
}
else
if($time>=3600 && $time<2*3600){
    echo "Last Backup an hour ago";
}
else
if($time>=2*3600 && $time<86400){
    echo "Last Backup few hours ago";
}
else
if($time>86400){
    echo "Last Backup on ".date("F d, Y",filemtime($newest_file));
}
}
else{
    echo "Backup not yet performed!";
}
?>

JQuery的

<script src="jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
    setInterval(function(){
        $("#status").load("f_backupstatus.php");

    },1000);
});
</script>

HTML

<div id="test" style="background-color: #0066CC;">
<span id="status" style="color:#FFFFFF;"></span></div>
<div id="colour" style="background-color: #999999">colour</div>

1 个答案:

答案 0 :(得分:1)

您始终可以返回JSON对象。在PHP文件中,拥有响应和颜色的数组可能是个好主意:

PHP:

<?php
$dir = "DB_Backups/";
$file = array();
$file = scandir($dir, 1);
$newest_file = $dir.$file[0];
$responses = array(
    ['status' => 'Last Backup just now', 'colour' => 'green'],
    ['status' => 'Last Backup a few seconds ago', 'colour' => 'blue'],
    ['status' => 'Last Backup a minute ago', 'colour' => 'violet'],
    ['status' => 'Last Backup a few minutes ago', 'colour' => 'yellow'],
    ['status' => 'Last Backup on'.date("F d, Y", filemtime($newest_file)), 'colour' => 'orange'],
    ['status' => 'Backup not performed yet!', 'colour' => 'red'],
);

if(is_file($newest_file)) {
    $time=time()-filemtime($newest_file);
}

if ($time > 86400) {
    $return = $responses[5];
} else if ($time > 7200) {
    $return = $responses[4];
} else if ($time > 3600) {
    $return = $responses[3];
} else if ($time > 120) {
    $return = $responses[2];
} else if ($time > 60) {
    $return = $responses[1];
} else {
    $return = $responses[0];
}

return json_encode($return);
?>


的Javascript:

$(function() {
    setInverval(function() {
        $.ajax({
            url: 'f_backupstatus.php',
            success: function(data) {
                data = JSON.parse(data);
                $('#status').text(data['status']);
                $('#colour').css('background-color', data['colour'])
            }
        });
    }, 1000);
}):