无法使用ajax将数据插入数据库

时间:2022-09-26 08:46:49

I am new to jquery and ajax and now I have a hard time finding a fix to this problem of mine when inserting data into database using ajax and codeigniter. All errors are okay but when there's no error on the form, I get a database error and all the inputs become NULL.

我是jquery和ajax的新手,现在我很难在使用ajax和codeigniter将数据插入数据库时​​找到解决这个问题的方法。所有错误都没问题,但是当表单上没有错误时,我收到数据库错误,所有输入都变为NULL。

Controller

调节器

public function add () {

 $this->load->model('user_model');
    $data => array (
      'first_name'      => $this->input->post['first_name'],
      'last_name'       => $this->input->post['last_name'],
      'active'          => $this->input->post['active'],
      'date_registered' => date('Y/m/d h:i:sa')
  );

  // assume validation rules are already set.
  if ($this->form_validation->run() == FALSE) {
   $result['message'] = validation_errors();
  } else {
   $result['data'] = $this->user_model->save($data);
  } 
 }

Ajax 1:

Ajax 1:

$(document).ready(function() { 
  $('#create-user').click( function(e) {
    var is_valid  = false;
    var form_id   = '#'+ $(this).parents('form').attr('id');
    // Validate required fields are not blank
    // do a js validation?

    // Apply action
    if(is_valid) {
      var add_result = do_submit(form_id);
    } else {
      $('#error-msg').html(result.message); // if form is not valid
    }
  });
});

Ajax 2:

Ajax 2:

function do_submit(form_id) {
  var url         = $(form_id).attr("action");
  var ajax_result = false;
  var formData    = {};

  // Submit form using ajax
  ajax_result = $.ajax({
    type: "POST",
    url: url,
    data: $(form_id).serialize(),
    dataType: 'json',
    success: function(result) {
      // return result; 
      //  do something
      console.log(result);
      if (result.data) {
        make_alert();
      }
    },
    error: function(textStatus) {
      /* Note: decide how all errors should be shown. */
      swal({
        title: "Error!",
        text: "Oops, something went wrong. Check fields and try again.",
        type: "error"
      });
    }
  });

  return ajax_result;
} // End do_submit()

2 个解决方案

#1


3  

To get post data in codeigniter we use

要在codeigniter中获取发布数据,我们使用

$this->input->post('field_name');

SO you need to change all post['field_name'] to post('field_name')

所以你需要将所有帖子['field_name']更改为post('field_name')

Your final code would be

你的最终代码是

 $this->load->model('user_model');
        $data => array (
          'first_name'      => $this->input->post('first_name'),
          'last_name'       => $this->input->post('last_name'),
          'active'          => $this->input->post('active'),
          'date_registered' => date('Y/m/d h:i:sa')
      );

Read https://www.codeigniter.com/user_guide/libraries/input.html

阅读https://www.codeigniter.com/user_guide/libraries/input.html

#2


4  

I think you have a syntax error here

我认为你在这里有语法错误

$this->load->model('user_model');
'data' => array (
  'first_name'      => $this->input->post['first_name'],
  'last_name'       => $this->input->post['last_name'],
  'active'          => $this->input->post['active'],
  'date_registered' => date('Y/m/d h:i:sa')
  );

Should probably be

应该是

$this->load->model('user_model');
$data => array (
  'first_name'      => $this->input->post('first_name'),
  'last_name'       => $this->input->post('last_name'),
  'active'          => $this->input->post('active'),
  'date_registered' => date('Y/m/d h:i:sa')
);

Your parameter array seems to be a key, but of what variable? So you need to have $data instead of 'data'.

你的参数数组似乎是一个关键,但变量是什么?所以你需要有$ data而不是'data'。

#1


3  

To get post data in codeigniter we use

要在codeigniter中获取发布数据,我们使用

$this->input->post('field_name');

SO you need to change all post['field_name'] to post('field_name')

所以你需要将所有帖子['field_name']更改为post('field_name')

Your final code would be

你的最终代码是

 $this->load->model('user_model');
        $data => array (
          'first_name'      => $this->input->post('first_name'),
          'last_name'       => $this->input->post('last_name'),
          'active'          => $this->input->post('active'),
          'date_registered' => date('Y/m/d h:i:sa')
      );

Read https://www.codeigniter.com/user_guide/libraries/input.html

阅读https://www.codeigniter.com/user_guide/libraries/input.html

#2


4  

I think you have a syntax error here

我认为你在这里有语法错误

$this->load->model('user_model');
'data' => array (
  'first_name'      => $this->input->post['first_name'],
  'last_name'       => $this->input->post['last_name'],
  'active'          => $this->input->post['active'],
  'date_registered' => date('Y/m/d h:i:sa')
  );

Should probably be

应该是

$this->load->model('user_model');
$data => array (
  'first_name'      => $this->input->post('first_name'),
  'last_name'       => $this->input->post('last_name'),
  'active'          => $this->input->post('active'),
  'date_registered' => date('Y/m/d h:i:sa')
);

Your parameter array seems to be a key, but of what variable? So you need to have $data instead of 'data'.

你的参数数组似乎是一个关键,但变量是什么?所以你需要有$ data而不是'data'。