通过ajax jquery从数据库输出数据

时间:2019-11-29 17:48:49

标签: php jquery ajax codeigniter

当我单击每个按钮的ID时,如何从数据库中获取数据 我的控制器功能

public function ajax (){
   $resultdata = $this->Booking_model->roominfo();
   echo json_encode($resultdata);
}

这是带有数据室ID和类的按钮

<button class="bkng bkn-room trans_200" data-room-id ="1">BOOK NOW</button>

这是我的模特

public function roominfo() {
  //if(isset($_POST["id"]))
  //{
        $sql = "Select name, price from rooms WHERE room_id = 'id'";
        $result =  $this->db->query($sql);
        return $result->result_array();
  //}

我的ajax jQuery及其按钮类和data-room-id

$(document).ready(function() {
        $(".bkng").on("click", function(event) {
              event.preventDefault(); 
            var id = $(this).data('room-id');
                console.log(id); 
                if(id != '') 
                {
                    $.ajax( {
                    type:"get",
                    url : "Pages/ajax",
                    data:{id:id}, 
                    success:function(data)
                    {
                        alert(data);
                        result = JSON.parse(data); 
                        $('#test1').append(result[0]['name']);
                        $("#test2").append(result[0]['price']);
                        $("#test3").append(result[0]['price']);
                        console.log(data); 
                    }
                });
            } 
            });
        }); 

它总是在控制台错误中指出Uncaught TypeError:无法读取未定义的属性'name'

1 个答案:

答案 0 :(得分:1)

您收到此错误,因为您的查询未返回任何内容,因为您可能没有id = 'id'的位置。因此,JSON.parse返回此错误。

因此,首先您需要修复模型以构建有效的查询,例如:

function roominfo() {
    $id=$_POST["id"];
    $query=$this->db->select('name, price')
                    ->where('room_id', $id)
                    ->get('rooms');
    return ($query->num_rows())? $query->result_array():false;  
}   

然后在您的ajax成功中,您可以检查返回的数据: console.dir(data)而不是使用alert或console.log,因为它们不会显示数组结构

您还应该检查是否未返回任何数据(假):

  type: 'POST',
  success:function(data)
    {
        console.dir(data);
        if (data){
            result = JSON.parse(data); 
            $('#test1').append(result[0]['name']);
            $("#test2").append(result[0]['price']);
        }
        else
        {
            $('#test1').append('no records found']);
        } 
    }