0

我正在尝试使用 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() 在成功中显示“未定义”。请任何人告诉我整个过程。提前致谢。

4

3 回答 3

0

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

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

      foreach(){}

或在模型中回显 $query 数组。这样就可以了。在 ajax 成功调用中,只需将数据附加到要在其中显示结果的元素。

于 2013-09-14T14:19:12.657 回答
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);`
于 2016-04-12T07:51:11.190 回答
-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);

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

于 2013-09-14T14:22:28.313 回答