Невозможно вставить данные ajax в базу данных codeigniter - PullRequest
0 голосов
/ 07 января 2019

Я хочу вставить некоторые данные поста 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 голосов
/ 07 января 2019

Попробуйте сначала отладить ваш код.

Получаете ли вы все данные в контроллере? Попробуйте сбросить значения POST var_dump($_POST) в контроллере, если ajax успешно отправляет данные.

Оттуда вы можете увидеть, были ли данные успешно отправлены с внешнего интерфейса.

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 );
    }
});
0 голосов
/ 07 января 2019

изменить

     $(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);

    }
0 голосов
/ 07 января 2019

Прежде всего, объявите переменную в JavaScript с ключевым словом var

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...