CodeIgniter将AJAX数据传递回conroller

时间:2016-01-18 03:45:55

标签: javascript jquery ajax codeigniter

我正在尝试打开表单以通过AJAX更新用户详细信息。但是我似乎无法回复任何事情。我可以帮忙吗?

我的想法是,有一个HTML表单暂时隐藏,当用户点击按钮时,行id并通过ajax发送到控制器,然后发送到模型。如何将数据检索回控制器并将其显示在表单上?

到目前为止,控制台日志或警报中没有任何内容。

我的观点

<div id="edit-dialog">
<?php echo form_open('manager/users/edit_user'); ?>
<p>First Name : <input type="text" name="firstname"/></p>
<p>Last Name : <input type="text" name="lastname"/></p>
<p>NRIC : <input type="text" name="nric"/></p>
<p>Address : <input type="text" name="address"/></p>
<p>Username : <input type="text" name="username"/></p>
</form>
</div>

我的Jquery代码

$('.editlink').on('click', function() {
var user_id = $(this).parent().parent('tr').attr('data-id');
  $.ajax({
    url: '/manager/agent/users/get_user',
    type: 'POST',
    dataType:'json',
    data:{'id':user_id},
    cache:false,
    success:function(result){
            $("#edit-dialog").show();
         //     console.log(result);
          var result = $.parseJSON(result); 
            console.log(result.id);
          //    $('#name').html(result.id); 
          //    $('#id').html(result.id);

}});

});

我的控制器

function get_user()
{
    $id = $this->input->post('id');
    $this->load->model('user');
    $data = $this->user->retrieve($id);
    echo json_encode($data);
    return json_encode($data);
}

public function retrieve($id)
{
    $this->db->where('id',$id);
    $query = $this->db->get($this->tablename);
    if($query->num_rows()==1)
    {
        return $query->result_array();  
    }
    else
    {
        return $query->result_array();  
    }
}

2 个答案:

答案 0 :(得分:2)

尝试在控制器中回显或消亡

echo json_encode($data);

die(json_encode($data));

您将获得结果变量

中的数据
success:function(result){
var result = $.parseJSON( result );
 $('#name').html(result.name);
 $('#id').html(result.id);
}

`

答案 1 :(得分:0)

一些建议

让你的ajax调用域相对

...
$.ajax({
    url: '/manager/agent/users/get_user',
...

主要是,我没有看到你对任何元素都有editlink类,因此监听器似乎没有附加到任何东西上。确保class="editlink"位于应该采用click

的任何元素上