【问题标题】:how to display data from database using $.post如何使用 $.post 显示数据库中的数据
【发布时间】:2015-12-20 17:41:32
【问题描述】:

嘿,我正在尝试使用 $.post 从数据库中获取数据。这里我将 db 数据作为 json 编码。但我无法显示或提醒数据。如果可能的话,我怎样才能显示 json 数组?如何检查 json 格式的数据库值?请帮助我。我正在使用 codeigniter

function profile_view(id3)
{
      $.post("<? echo base_url();?>Attendance/Prev_leave_record", {id:id3},function(data){
                  //do something
    });
 } 

控制器

   function Prev_leave_record()
{
    $teacher_id=$this->input->post('id');
    $teacher_details=$this->AM->prev_record($teacher_id);       
    $out=array(
    'teacher_details'=>$teacher_details);
   // echo '{"teacher_details":'.json_encode($teacher_details).'}';
     echo json_encode($out);

}

型号

   function prev_record($teacher_id)
{
   $this->db->select('leave_from_date,leave_to_date');
    $this->db->from('leave_data');
    $this->db->where('applied_user_id',$teacher_id);
    $teacher_details=$this->db->get();
    return $teacher_details;
}

【问题讨论】:

    标签: php json codeigniter


    【解决方案1】:

    试试这个

    型号: 您的模型进行了查询,但没有返回查询结果。 见Returning Query Results

    function prev_record($teacher_id)
    {
       //This is opinion, but it will be much more efficient 
       //not using Query Builder for such a simple query
       $sql = "SELECT leave_from_date, leave_to_date FROM leave_data WHERE applied_user_id = ?";
       $query = $this->db->query($sql, [$teacher_id]);
    
       //always check that the query produced results
       //the next statement returns one row as an array or
       //returns NULL if the query produced no results
       return $query->num_rows() > 0 ? $query->row_array(): NULL;
    }
    

    控制器:

    function Prev_leave_record()
    {
       $teacher_id = $this->input->post('id');
       $teacher_details = $this->AM->prev_record($teacher_id);
       if(isset($teacher_details))
       {
          $out['results'] = "Success";
          $out['teacher_details'] = $teacher_details;
       }
       else
       {
         $out['results'] = "Failed"; 
       }    
       echo json_encode($out);
    }
    

    javascript:

    function profile_view(id3)
    {
       $.post("<? echo base_url();?>attendance/prev_leave_record", {id:id3}, 
           function(data)
           {
             console.log(data); //so you can see the structure returned
             if(data.results === "Success){
                alert("Cool, it worked: " + data.teacher_details);
             } else {
                alert("Opps, we didn't get anything.");
             }
           }
       );
    } 
    

    【讨论】:

    • 如何获取每一列的值?像 data.teacher_details['leave_from_date']?
    • data.teacher_details 是一个 javascript 对象,因此您可以使用 data.teacher_details['leave_from_date']data.teacher_details.leave_from_date
    • 谢谢,我可以在解析 json 后提醒数据。现在我想在弹出窗口的 html 表中显示这些数据。为此,我使用了 $.each 函数。之后我无法显示那些警报数据,为什么? $.each(result, function(index, obj){ $('#we').append('&lt;tr&gt;&lt;td&gt;' + obj.teacher_details['leave_from_date']+'-'+ obj.teacher_details['leave_to_date'] + '&lt;/td&gt;&lt;td&gt;'); });
    【解决方案2】:

    试试这个,

    function profile_view(id3)
    {
          $.post("<? echo base_url();?>Attendance/Prev_leave_record", {id:id3},function(data){
                      console.log(data); // or alert(data);
        });
     } 
    

    然后从浏览器的 Inspect 元素中检查控制台(F12 或 ctrl+shift+i)

    【讨论】:

    • 严重性:警告

      消息:json_encode() [function.json-encode]:类型不受支持,编码为 null

      文件名:controllers/Attendance.php

      行号:68

      {"teacher_details":{"conn_id": null,"result_id":null,"result_array":[],"result_object":[],"custom_result_object":[],"current_row":0,"num_rows":1,"row_data":null}}跨度>
  • 这是 json_encode() 函数的问题。请检查,检查错误消息中没有提到的行并检查。
  • 猜你喜欢
    • 2016-05-11
    • 2018-03-17
    • 2019-09-05
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多