我正在尝试使用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()在成功中显示“未定义”。请有人告诉我整个过程。提前谢谢。
答案 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);
如果您遇到任何问题,请告诉我。