codeigniter ajax / json根据数据库中的状态更改div颜色

时间:2013-08-21 10:06:29

标签: ajax json codeigniter

我有一个ajax初学者问题:

我有一个公司的数据库表:id,company_name,select_button,status

当用户点击公司行上的select_button时,状态更改为2,工作正常。但是,每个公司行还有一个进度条,当公司行的状态为2时,我希望该公司行的进度条将颜色从绿色(状态1)更改为红色(状态2)。这是我试图做的不成功的方法之一:

Model(name:get_status) - 获取每个公司行的状态:

public function get_status(){
    $this->db->select('status')
            ->from('companies');
    $query = $this->db->get();
    return $query->result();
}

控制器(名称:状态) - 接收每个公司行的状态,并通过json发送给视图:

public function status(){
    $output = $this->platform_model->get_status();
    return json_encode($output);
}

查看(名称:platform_view) - 接收控制器结果并根据状态为2或1执行更改进度条颜色的逻辑:

$(document).ready(function(){
        $ajax({
            url: '<?php echo site_url('home/status');?>',
            type: 'POST',
            datatype: 'json',
            success: function(output){
                if(output === 2){
                  $('.ui-progressbar-value').css('background', 'red');  
                }else{
                    $('.ui-progressbar-value').css('background', 'green');
                }

            }
         });
});

提前谢谢!

1 个答案:

答案 0 :(得分:1)

首先,你应该echo json字符串,而不是从控制器返回它。

其次,您需要了解您的AJAX将接收JSON对象,而不是单个值。

您的代码应该是(控制器):

public function status(){
$output = $this->platform_model->get_status();
echo json_encode($output);
}

和ajax:

    $ajax({
        url: '<?php echo site_url('home/status');?>',
        type: 'POST',
        datatype: 'json',
        success: function(output){
           // Sure you need the ===? Sometimes it does problems 
            if(output.status == "2" ){ 

              $('.ui-progressbar-value').css('background', 'red');  
            }else{
                $('.ui-progressbar-value').css('background', 'green');
            }

        }
     }).fail(function(){
             console.log("Error getting data from server");
   });