CodeIgniter上的JQuery AJax:JSON数据类型返回null

时间:2017-03-04 11:44:08

标签: php jquery json ajax codeigniter

我是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;
    }
}

1 个答案:

答案 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);
}

您的模型已返回TRUEFALSE,因此请将该返回值直接放入$msg数组中。