无法使用ajax

时间:2016-05-13 06:10:39

标签: php jquery ajax codeigniter

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

控制器

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:

$(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:

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 个答案:

答案 0 :(得分:4)

我认为你这里有语法错误

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

应该是

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

你的参数数组似乎是一个关键,但是变量是什么?因此,您需要$data而不是'data'

答案 1 :(得分:3)

要在codeigniter中获取帖子数据,我们使用

SELECT * 
FROM TblEmployee 
WHERE (EmpId + CASE WHEN @PeriodID<50 THEN AssociateId ELSE 0 END) NOT IN 
      (SELECT EmpId + CASE WHEN @PeriodID<50 THEN AssociateId ELSE 0 END FROM TblAssociate)

所以您需要将所有$this->input->post('field_name'); 更改为post['field_name']

您的最终代码将是

post('field_name')

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