如何在codeigniter中使用ajax从数据库中获取一行

时间:2013-09-14 14:00:47

标签: javascript ajax codeigniter jquery

我正在尝试使用codeigniter中的ajax从数据库中获取一行数据。

这是javascript函数 -

$(function(){
    $("button[name='program_view_details']").click(function(e){
    e.preventDefault();
    var program_id=$(this).attr('id');
    $.ajax({
        url: "<?php echo base_url();?>program_management/get_program_data",
        type: "POST",
        dataType: "html",

        data: "program_id="+program_id,
        success: function(row)
        {
            alert(row.program_name);
        }
    });


});

我不确定数据类型和帖子是否正确。

这是我的控制器功能 -

public function get_program_data( ){
    $program_id = $this->input->post('program_id');
    $this->load->model('program_management_model');
    $data['programs']= $this->program_management_model->get_program_specific($program_id);
    echo $data;

}

这是模型 -

function get_program_specific($program_id){
    $query=$this->db->query("SELECT * FROM programs WHERE program_id='".$program_id."'");
    return $query->result();
}

我正在搜索从控制器返回行到javascript的方式。但是alert()在成功中显示“未定义”。请有人告诉我整个过程。提前谢谢。

3 个答案:

答案 0 :(得分:0)

$ data ['programs'] = $ this-&gt; program_management_model-&gt; get_program_specific($ program_id);

你在控制器中回显的$ data基本上是一个数组[],而program是一个存在于$ data中的数组。使用

回显控制器中的$ data
      foreach(){}

或回显模型中的$ query数组。这将成为诀窍。在ajax成功调用中,只需将数据附加到要显示结果的元素。

答案 1 :(得分:0)

根据您的页面更改名称。

在你的脚本中

$.ajax({
    url: '<?php echo base_url();?>managealerts_edit/editalerts',
    type: "POST",
    data: {'id': edit_id},
    cache: false,
    dataType: "json",
    success: function(row){ 
        //alert(row.sub);
        $('#edit').show();
        $('#sub').val(row.sub);
        $('#mess').val(row.mess);
    }
});

在您的模型中:

$query = $this->db->query("SELECT fld_id, fld_course_id,fld_sub,fld_mess from tbl_alerts where fld_id='".$det."' ");
if ($query->num_rows() > 0)
{
    $row = $query->row_array(); 
    $data=array("sub" => $row['fld_sub'], "mess" => $row['fld_mess']);
    echo json_encode($data);
}

在您的控制器中:

$det = $this->input->post('id');
//$alertsres['tbl_alerts'] = $this->managealerts_m->select_editalerts($det);
$this->managealerts_m->select_editalerts($det);`

答案 2 :(得分:-1)

在模型中

function get_program_specific($program_id){
    $temp=array();
    $query=$this->db->query("SELECT * FROM programs WHERE program_id='".$program_id."'");
    $temp= $query->row_array();
    echo $temp['program_name'];
}
在控制器中

更改行

$data['programs']= $this->program_management_model->get_program_specific($program_id);

$this->program_management_model->get_program_specific($program_id);

最后在javascript中

alert(row);

如果您遇到任何问题,请告诉我。