0

我有一个ajax初学者问题:

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

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

模型(名称: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');
                }

            }
         });
});

先感谢您!

4

1 回答 1

1

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

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

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

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

和阿贾克斯:

    $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");
   });
于 2013-08-21T10:23:26.820 回答