无法将Ajax数据插入数据库Codeigniter

时间:2019-01-06 21:24:54

标签: ajax codeigniter

我想在数据库中插入一些ajax发布数据。但是,当我单击提交时,没有数据被插入。 查看(header.php)

     $(function(){
 $(".submit").click(function(){
transaction_student_id=$(".student_id").val();
transaction_particular_name=$(".particular_name").val();
transaction_id=$(".transaction_id").val();
 jQuery.ajax({
                    type: "POST",
                    url: "<?php echo base_url().'user/add_transaction'; ?>",
                    dataType: 'json',
                    data: {transaction_student_id: transaction_student_id,transaction_particular_name:transaction_particular_name,transaction_id:transaction_id},
                    success: function(data) {

                    }
                    }); 
 });
  });

控制器(User.php)

public function add_transaction()
      {
        $columns_and_fields = array('transaction_id','transaction_particular_name','transaction_student_id');
       foreach ($columns_and_fields as $key) 
      $data[$key]=$this->input->post($key);
        $query=$this->Mdl_data->insert_transaction($data);
        if($query)
          redirect('User','refresh');
      }

模型(Mdl_data.php)

public function insert_transaction($data=array())
    {

        $tablename='transaction';
        $query=$this->db->insert($tablename,$data);
        return $query;
    }

3 个答案:

答案 0 :(得分:0)

首先,使用关键字var在JavaScript中声明变量

var transaction_student_id=$(".student_id").val();

在开始Ajax之前,请使用console.log()来了解变量是否有数据

第二件事是您没有在控制器中以正确的方式获取数据

尝试这样

public function add_transaction()
{
   $columns_and_fields = array('transaction_id' = $this->input->post('transaction_id'), 
      'transaction_particular_name' => $this->input->post('transaction_particular_name'), 
      'transaction_student_id' => $this->input->post('transaction_student_id')); 

   $query=$this->Mdl_data->insert_transaction($columns_and_fields);
     if($query){
        redirect('User','refresh');

     }
}

请勿无故使用多余的代码行

public function insert_transaction($data = array())
{
   return $this->db->insert('transaction', $data);
}

答案 1 :(得分:0)

尝试先调试代码。

您是否在控制器中获取了所有数据?如果ajax成功发送数据,请尝试在控制器中转储POST值var_dump($_POST)

从那里,您可以查看是否从前端成功发送了数据。

jQuery.ajax({
    type: "POST",
    url: "<?php echo base_url(); ?>user/add_transaction",
    dataType: 'json',
    data: {
        transaction_student_id: transaction_student_id,
        transaction_particular_name: transaction_particular_name,
        transaction_id: transaction_id
    },
    success: function( data ) {
        console.log( data );
    },
    error: function( xhr, status ) {
        /** Open developer tools and go to the Console tab */
        console.log( xhr );
    }
});

答案 2 :(得分:0)

更改

     $(function(){
 $(".submit").click(function(){
transaction_student_id=$(".student_id").val();
transaction_particular_name=$(".particular_name").val();
transaction_id=$(".transaction_id").val();
 jQuery.ajax({
                    type: "POST",
                    url: "<?php echo base_url().'user/add_transaction'; ?>",
                    dataType: 'json',
                    data: {transaction_student_id: transaction_student_id,transaction_particular_name:transaction_particular_name,transaction_id:transaction_id},
                    success: function(data) {
alert(data + ' id added' );
window.location.reload(); // force to reload page
                    }
                    }); 
 });
  });

在控制器

public function add_transaction()
      { // use it only for ajax call or create another one 
        $columns_and_fields = array();
// 'transaction_id','transaction_particular_name','transaction_student_id'
       foreach ($_POST as $key) 
{
array_push($columns_and_fields , array(
 'transaction_student_id' => $key['transaction_student_id'],
'transaction_particular_name'=>$key['transaction_particular_name'],
'transaction_id'=>$key['transaction_id']
  )
);
}
        $this->Mdl_data->insert_transaction_array($columns_and_fields);

      }

并在模型中创建新方法

public function insert_transaction_array($data=array())
    {

        $tablename='transaction';
        $this->db->insert_batch($tablename,$data);

    }