无法在html中显示用户的详细数据(但可以使用print_r()显示数组)“codeigniter”

时间:2018-04-07 13:47:33

标签: php mysql codeigniter

当我点击每个用户名旁边的详细信息按钮时,我想显示用户详细信息模式,但问题是我无法显示我从控制器获得的“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>

1 个答案:

答案 0 :(得分:0)

get_user函数没有返回任何内容。 (注意:当您尝试print_rvar_dump语句时,将返回print_rvar_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。检查一下。

希望这会有所帮助。