我正在尝试打开表单以通过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();
}
}
答案 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