【问题标题】:CodeIgniter - getting data from database automatically using setIntervalCodeIgniter - 使用 setInterval 自动从数据库中获取数据
【发布时间】:2017-04-24 19:02:57
【问题描述】:

在 codeigniter 中,我想在不重新加载页面的情况下自动显示数据库中的更改,因此我使用 ajax 在我的视图中运行控制器功能。我正在使用setInterval 一遍又一遍地运行该函数,直到控制器函数listen_auth 返回1 并且视图显示1。

查看:

<h4 class="qr-title" id="status"></h4>

<script>
    var username = <?php echo(json_encode($username)); ?>;

    function checkAuthStatus() {
        setInterval(getStatus, 1000);
    }

    function getStatus() {
        var isAuth = <?php echo(json_encode($isAuth)); ?>;
        $.ajax({
            url: '<?php echo base_url('auth/listen_auth'); ?>',
            type: 'post',
            data: {username:username},
            success: function(data){
                console.log(data);
            }
        });
        document.getElementById("status").innerHTML = isAuth;
    }
</script>

这是我的控制器中的listen_auth() 函数:

public function listen_auth(){
        $username = $this->input->post('username');
        $isApproved = $this->adminmodel->get_auth($username);
        if($isApproved == 1){
            return 1;
        } else{
            return 0;
        }
    }

问题是 isAuth 变量只有在页面重新加载后才会改变......我做错了什么吗?或者有没有更好的方法来做到这一点?

【问题讨论】:

  • 你在console.log(data)得到了什么

标签: javascript php jquery ajax codeigniter


【解决方案1】:

来自服务器“listen_auth()”的函数应该打印文本而不返回。

public function listen_auth(){
    $username = $this->input->post('username');
    $isApproved = $this->adminmodel->get_auth($username);
    if($isApproved == 1){
        echo 1;
    } else{
        echo 0;
    }
}

然后在 AJAX 请求中从服务器获取答案:

<script>
var username = <?php echo(json_encode($username)); ?>;

function checkAuthStatus() {
    setInterval(getStatus, 1000);
}

function getStatus() {
    var isAuth = <?php echo(json_encode($isAuth)); ?>;
    $.ajax({
        url: '<?php echo base_url('auth/listen_auth'); ?>',
        type: 'post',
        data: {username:username},
        success: function(data){
            document.getElementById("status").innerHTML = data;
        }
    });

}
</script>

【讨论】:

    【解决方案2】:

    你需要在ajax请求中声明$isAuth并赋值,因为php变量在没有服务器请求的情况下不会改变它的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2012-02-19
      • 2020-04-22
      • 2016-10-29
      • 1970-01-01
      相关资源
      最近更新 更多