当我点击每个用户名旁边的详细信息按钮时,我想显示用户详细信息模式,但问题是我无法显示我从控制器获得的“user_detail”数据,这让我很困惑< em>因为当我使用 print_r()从控制器显示时,它完全显示了我想要的数据数组。现在我只想将其显示为html,就像我首先显示所有用户一样。
这是我的完整代码,我认为我们应该只关注控制器中的get_detail()
方法。
模型/ test_model.php:
function get_user()
{
$query = $this->db->query("SELECT * FROM tb_users ");
$result = $query->result_array();
return $result;
}
function get_detail($user_id)
{
$query = $this->db->query("SELECT * FROM tb_users where user_id = '".$user_id."'");
$result = $query->result_array();
return $result;
}
控制器/的welcome.php:
public function index()
{
$data["datakcp"] = $this->test_model->get_user();
$this->load->view('welcome_message',$data); // do this by loading a "view" that formats the data we gather here
}
public function get_user($user_id = null)
{
// get the user_id from the ajax request
// this means if $user_id is set (not null) then make $user_id = $user_id. Otherwise, make $user_id = posted input
$user_id = ($user_id) ? $retailer_id : $this->input->post('user_id');
$datadetail= $this->test_model->get_detail($user_id);
echo json_encode($datadetail);
}
查看/ my_view.php:
<div class="container" style="width:700px;">
<h3 align="center"> </h3>
<br>
<div class="table-responsive">
<table class="table table-bordered">
<tr>
<th width="70%">Employee Name</th>
<th width="30%">View</th>
</tr>
<?php foreach($datakcp as $user){ ?>
<tr>
<td><?php echo $user["user_name"] ?></td>
<td><input type="button" name="detail" value="detail" id="<?php echo $user["user_id"] ?>" class="btn btn-info btn-xs view_dawta"></td>
</tr>
<?php } ?>
</table>
</div>
</div>
<div id="dataModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body" id="employee_detail">
<table>
<thead>
<th>Username<th>
<th>Campaign</th>
</thead>
<tbody id="userDetail">
</tbody>
</table>
</div>
</div>
</div>
我的jQuery ajax脚本:
<script>
$(document).ready(function(){
$('.view_dawta').click(function(){
var user_id= $(this).attr("id");
$.ajax({
url:"index.php/Welcome/get_user",
method:"post",
data:{user_id:user_id},
success:function(data){
console.log(data)
$.each((JSON.parse(data)), function(key, value){
$('#userDetail').append(
'<tr>'+
'<td>'+value.user_name+'</td>'+
'<td>'+value.campaign_name+'</td>'+
'</tr>'
);
});
$('#dataModal').modal("show");
}
});
});
});
</script>
答案 0 :(得分:0)
get_user
函数没有返回任何内容。 (注意:当您尝试print_r
或var_dump
语句时,将返回print_r
或var_dump
语句的输出,否则不会返回任何内容。
将echo json_encode($datadetail);
放在get_user
函数的末尾,并接收json
个数据作为回应。然后,您必须使用json
成功函数中的ajax
数据格式化。
或者,您可以从html
函数返回格式化get_user
,在这种情况下,$('#employee_detail').html(data);
应该按原样运行。
修改强>
1-以下是您应该用来接收ajax
数据的基本json
来电:
$.ajax({
url:"index.php/Welcome/get_user",
method:"post",
contentType: "application/json;",
dataType: "json",
data:{user_id:user_id},
success:function(data){
$('#employee_detail').html(data);
$('#dataModal').modal("show");
}
});
2-在get_user
函数中,将echo json_encode($datadetail);
放在最后。此时,您应该能够在模式中看到json
数据。
3-在get_user
功能中,将$datadetail["userdetail"]
替换为$datadetail
。在函数结束时,echo json_encode($datadetail);
。
4-在my_view.php
中,在<div class="modal-body" id="employee_detail">
内部构建一个表格,如下所示(这只是一种方式,如果您愿意,可以选择不同的方法):
<table>
<thead>
<th>Username</th>
<th>Campaign</th>
<!-- include more <th> tags for other user data -->
</thead>
<tbody id="userDetail">
</tbody>
</table>
5-在ajax
来电中,您的success
功能可以是:
success:function(data){
$.each(data, function(key, value){
$('#userDetail').append(
'<tr>'+
'<td>'+value.user_name+'</td>'+
'<td>'+value.campaign_name+'</td>'+
/* include more <td> tags for other user data */
'</tr>'
);
});
$('#dataModal').modal("show");
}
6-这应足以让您全面了解如何接收和处理json
数据,并将其格式化为html。这应该可以帮助你入门。您现在可以处理其他格式详细信息等。
在相关说明中,您在返回的数据中有重复的user_id
。检查一下。
希望这会有所帮助。