Невозможно отобразить подробные данные пользователя в html (но можно показать массив с помощью print_r ()) «codeigniter»

0

Я хочу показать пользовательскую деталь модальной, когда я нажимаю кнопку подробностей рядом с каждым именем пользователя, но проблема в том, что я не могу отобразить данные "user_detail", которые я получил от контроллера, из-за меня это запутывает, потому что когда я показываю от контроллера, использующего 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
    var_dump () результат вашего запроса, который вы получаете из базы данных
  • 0
    Я только что сделал, и он успешно показывает массив так же, как я использовал print_r () в моем контроллере, но все же я хочу показать их в моем представлении в виде HTML. как использование foreach (), чтобы показать всех пользователей в первую очередь
Показать ещё 4 комментария
Теги:
codeigniter

1 ответ

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"> как my_view.php ниже (это только один способ, вы можете выбрать другой подход, если хотите):

<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 в возвращаемых данных. Проверьте это.

Надеюсь это поможет.

  • 0
    Я просто поставил echo json_encode (), но модал все еще ничего не показывал, возможно, вы правы, это как-то связано с ajax (я все еще новичок в ajax). Можете ли вы помочь мне, просто измените мой код выше
  • 0
    Пожалуйста, проверьте редактировать мой ответ.
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню