Ajax无法从Codeigniter中的数据库获取数据

时间:2019-02-18 11:28:01

标签: javascript ajax codeigniter mysqli

我正在尝试在引导程序模式内填充表单字段,以使用ajax更新数据库中的数据。我没有获取任何数据,而是空字段的模式弹出窗口。请检查我的代码,并帮助我解决问题。

这是控制器功能。

public function edit(){
    $output = array();
    $this->load->model("crud_data");
    $patient_id = $this->input->post("patient_id");
    $data = $this->crud_data->fetch_single($patient_id);
    foreach ($data as $row) {
        $output["name"] = $row->name;
        $output["age"]  = $row->age;
    }
    echo json_encode($output);
}

这是fetch_single模态函数。

public function fetch_single($patient_id){
$this->db->where("patient_id", $patient_id);
$query = $this->db->get('patients');
return $query->result();
}

该功能的Ajax

$(document).on("click", '.edit', function(){
  var patient_id =  $(this).attr("patient_id");
  $.ajax({
    url:"<?php base_url(); ?>crud/edit",
    method:"POST",
    data:{'patient_id':patient_id},
    dataType:"json",
    success:function(data){
      $("#edit").modal("show"); 
      $("#name").val(data.name);
      $("#age").val(data.age);
      $("#patient_id").val(patient_id); 
      $(".modal-title").html("Edit User")
    },
  });
});

我想获取字段中的数据,以便我可以对其进行更新。

4 个答案:

答案 0 :(得分:0)

public function edit(){
    $output = array();
    $this->load->model("crud_data");
    $patient_id = $this->input->post("patient_id");
    $data = $this->crud_data->fetch_single($patient_id);
    $output["name"] = $data ->name;
    $output["age"]  = $data ->age;
    $this->output->set_content_type('application/json');
    $this->output->set_output(json_encode($output));
}

如果您的模型和数据库正确执行此代码,则此代码必须正确。

答案 1 :(得分:0)

成功使用ajax时,您没有从控制器发送json_encode时解析数据。 因此,成功解析json_encode,然后将数据添加到模式中。

Mockito.when(mockedRequest.request())

谢谢

答案 2 :(得分:0)

我无法告诉您您的错,但易于调试。首先,您可以控制台ajax中接收的数据。在成功功能中,您可以控制台数据。如果为空,则将检查您的php函数。检查isset输入的$ patient_id,并检查 $this->crud_data->fetch_single($patient_id);

的输出

简述,您应该逐步检查以发现错误

答案 3 :(得分:-1)

控制器

如果仅获得一行,请不要使用循环

public function edit(){
$output = array();
$this->load->model("crud_data");
$patient_id = $this->input->post("patient_id");
$data = $this->crud_data->fetch_single($patient_id);
$output["name"] = $data ->name;
$output["age"]  = $data ->age;
echo json_encode($output);
}

模型

要仅获取一行,请使用row()而不是result()

public function fetch_single($patient_id){
  $this->db->where("patient_id", $patient_id);
  $query = $this->db->get('patients');
  return $query->row();
}

Ajax成功功能

将值分配给输入字段后加载模态

success:function(data){ 
  $("#name").val(data.name);
  $("#age").val(data.age);
  $("#patient_id").val(patient_id); 
  $(".modal-title").html("Edit User");
  $("#edit").modal("show");
}