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'。