如何在cakephp中自动刷新div数据

时间:2013-02-14 22:35:02

标签: jquery cakephp

我疯了,我在cakephp表中有这个代码:

<td style="width:50%">
    <div id="progress<?=$turnTime['TurnTime']['name'];?>">
        <?php if ($turnTime['TurnTime']['end_time'] < date('Y-m-d H:i:s')) {
                echo __('Waiting...');
            }else{
                $percent = ((strtotime($turnTime['TurnTime']['end_time']) - strtotime(date('Y-m-d H:i:s')))/
                (strtotime($turnTime['TurnTime']['end_time']) - strtotime($turnTime['TurnTime']['start_time'])))*100;
                $p = 'width: '.round($percent, 2).'%';
                //show the time left
                $current_date = new DateTime(date('Y-m-d H:i:s'));
                $since_current = $current_date->diff(new DateTime($turnTime['TurnTime']['end_time']));

                echo $since_current->h.' hours - '.$since_current->i.' minutes - '.$since_current->s.' seconds Left';
        ?>
        <div class="progress progress-striped active" id="bar">
            <div class="bar" style= "<?php echo $p; ?>"></div>
        </div>
        <?php } ?>
    </div>  
</td>

我想每秒自动刷新div数据

<div id="progress<?=$turnTime['TurnTime']['name'];?>">

我尝试了几种方法,但是......请帮助我,谢谢

我尝试使用这样的jQuery:

<script>
    $(document).ready(function(){
        setInterval(showText(), 1000);
        function showText(){
            //alert("11");
            $("#progress<?=$turnTime['TurnTime']['name'];?>").html(....some codes here...);
        }
    });
    </script>

但它不起作用......

2 个答案:

答案 0 :(得分:1)

setInterval调用错误

在问题中有这个:

  

setInterval(showText(),1000);

每秒会调用 showText的结果,但是showText没有返回值(更不用说,返回一个函数)所以它会有效地调用{{ 1}}只有一次文件就绪。

要修复此错误,请使用:

showText

每秒会调用函数 setInterval(showText, 1000);

答案 1 :(得分:-1)

尝试

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    function showText()
    {
        var hidden_field = $('#progress_get_me').val();
        $("#progress"+hidden_field).html(....some codes here...);
    }

    $(function()
    {
        setInterval(showText, 1000);
    });

</script>


<input type="hidden" value="<?=$turnTime['TurnTime']['name'];?>" id="progress_get_me" />

解释

程序员创建的函数必须在$(document).ready的一侧声明,所以我在那里纠正了你。

第二个不要在php内使用jQuery这不是一个好主意,根据个人经验,它不常用,我不知道理由。

如果你想在php内使用jQuery,第三次使用隐藏字段你也可以使用ajax调用服务器,然后从响应对象中使用jQuery内的那些值。