在 Codeigniter 中通过 ajax 获取数据

Getting data by ajax in Codeigniter

我在 CI 中通过 ajax 将记录添加到数据库,所以我试图 return 新记录的 ID 但它不起作用,记录已添加但没有 id 是 returned 。(在 ajax 代码中试图提醒新记录 id 但它正在提醒未定义)

下面是ajax代码:

$.ajax({
type:'post',
url: baseURL+"admin/Products/add_product",
data:postData,
  success:function(data){

alert(data[0].id);
  $('#register_form')[0].reset();


}  });

这是控制器,

注意我从 create_product 方法 returning id 并将其放入 get_by_id 方法,然后 return 结果

  if($id=$this->Products_model->create_product($data)){
$result = $this->Products_model->get_product_by_id($id);
 return $result;

       }    

这是我的模型方法

public function create_product($data){


   $query = $this->db->insert('products',$data);

  if($query){


$id = $this->db->insert_id();

     return $id;

 }else{
    return false;
 } 

    }

 //////////get_by_id_method
    public function get_product_by_id($id){
    $this->db->where($id,'id');
    $query = $this->db->get('products');

    if($query){



        return $query->result();
    }

    }

您可能需要在控制器中使用适当的内容类型回显 JSON:

$result = [];
$id = $this->Products_model->create_product($data);

if ($id) {
   $result = $this->Products_model->get_product_by_id($id);
}

header("Content-type: application/json");
echo json_encode($result);

以便响应可以是空对象或查询结果。

希望对您有所帮助:

你的ajax应该是这样的:

$.ajax({
  type:'post',
  url: baseURL + "admin/Products/add_product",
  data:postData,
  success:function(data)
  {
    var response = JSON.parse(data);
    alert(response.id);
    $('#register_form')[0].reset();
  }  
});

你的控制器应该是这样的:

$id = $this->Products_model->create_product($data);
if($id)
{
  $result = $this->Products_model->get_product_by_id($id);
  echo json_encode($result);
  exit;
}

你的模型方法get_product_by_id应该是这样的:

public function get_product_by_id($id)
{
  $this->db->where($id,'id');
  $query = $this->db->get('products');
  if($query->num_rows() > 0)
  {
    return $query->row();
  }
}