我是codeigniter的新手,这是我第一次使用jquery ajax。
我有一个模态表单,可以将信息传递给视图中的脚本。我遇到的问题是ajax给出了空值...
我试图提醒脚本上的数据并显示正确的值,但是当它将数据作为json传递给控制器时,我认为这是失败的地方。我不知道该怎么办。你有什么想法吗?
视图上的脚本片段
$(function () { //add new user from modal
$('#adduser_modal').modal('show');
$('#adduser_modal').find('.modal-title').text('Add New User');
$('#addUser_form').attr('action', '<?php echo base_url() ?>Hgv_controller/addnewuser');
});
$('#saveuser_btn').click(function () {
var url = $('#addUser_form').attr('action');
$.ajax({
type: 'ajax',
method: 'post',
url: url,
data: data,
async: false,
dataType: 'json',
jsonpcallback: success
:
function (response) {
if (response.success) {
$('#adduser_modal').modal('hide');
$('#addUser_form')[0].reset();
}
}
});
这是来自控制器的一段代码
public function addnewuser()
{
$this->load->database();
//load model for crud
$this->load->model('Crud');
$result = $this->Crud->adduser();
$msg['success'] = false;
$msg['type'] = 'add';
if ($result) {
$msg['success'] = true;
}
echo json_encode($msg);
}
这是模型的片段
public function adduser()
{
$field = array(
'username' => $this->input->post('hgv_username'),
'f_name' => $this->input->post('hgv_firstname'),
'l_name' => $this->input->post('hgv_lastname'),
'password' => $this->input->post('hgv_password'),
'user_type' => $this->input->post('hgv_type'),
);
$this->db->insert('hgv_user', $field);
if ($this->db->affected_rows() > 0) {
return true;
} else {
return false;
}
}
答案 0 :(得分:0)
使用jsonpcallback
似乎不合适。试一试
$('#saveuser_btn').click(function () {
var url = $('#addUser_form').attr('action');
$.ajax({
method: 'post',
url: url,
data: data,
dataType: 'json',
success: function (response) {
if (response.success) {
$('#adduser_modal').modal('hide');
$('#addUser_form')[0].reset();
} else {
alert('New User was not added.');
}
}
我还删除了一些您可能不应该使用的ajax选项。 其余代码看起来不错,但是使用它可以使控制器更有效率。
public function addnewuser()
{
$this->load->database();
//load model for crud
$this->load->model('Crud');
$msg['success'] = $this->Crud->adduser();
$msg['type'] = 'add';
echo json_encode($msg);
}
您的模型已返回TRUE
或FALSE
,因此请将该返回值直接放入$msg
数组中。