尝试使用jQuery和Ajax填充时,表单元格返回“ undefined”

时间:2019-06-18 09:37:02

标签: jquery ajax laravel

我是Jquery和Ajax的新手。我在视图刀片中有一个动态选择选项,然后我试图通过将选定值传递给控制器​​(在laravel中)并获取选定值的详细信息来填充HTML表

我尝试使用带有(post url)的JQuery和Ajax来做到这一点,但是我的表只是被“未定义”填充,请帮助我找出代码中的错误

我的脚本

$(document).ready(function(){   
   $( "#dtl" ).click(function() {
    var value = $("#hotelname :selected").val();
     $.ajax({
        url: "{{ route('Rooms.maketable') }}",
        method:'POST', 
        data : {value:value},        
            success: function (data) {
              // console.log(data);
            $('#datatable tr').not(':first').not(':last').remove();
            var html = '';
            for(var i = 0; i < data.length; i++){
                html += '<tr>'+
                            '<td>' + data[i].hotel_id + '</td>' +
                            '<td>' + data[i].available_date + '</td>' +
                            '<td>' + data[i].singlerooms + '</td>' +
                            '<td>' + data[i].doublerooms + '</td>' +
                            '<td>' + data[i].deluxrooms + '</td>' +
                            '<td>' + data[i].deluxdoublerooms + '</td>' +
                            '<td>' + data[i].superiorsuitrooms + '</td>' +
                        '</tr>';
                }   
            $('#datatable tr').first().after(html);
        },
        error: function (data) {
        }
    });
});
});

控制器中的两种方法

public function showform()
    {
        $hotelname  =  hotels::all();
        return view('admin.hotelrooms.index',compact('hotelname'));
    }
 }
    public function makeTable()
      {
        $data = hotelroom::where('hotel_id', '=', $request->get('value'));          
        return Response::json($data);
    }

我的路线

Route::get('/home/Rooms', 'Admin\RoomsController@showform')->name('Rooms');
Route::post('/home/Rooms', 'Admin\RoomsController@makeTable')->name('Rooms.maketable');

expected to fill my HTML blank table with data receive from hotelroom table
but its only getting fills with "undefined" in every cell

3 个答案:

答案 0 :(得分:1)

您尝试访问方法内部不可用的请求对象。如下更新您的makeTable方法,确保您导入use Illuminate\Http\Request; 在您的控制器之上。

   public function makeTable(Request $request)
    {
        $data = hotelroom::where('hotel_id', '=', $request->get('value'))->get(); //  add get() function here         
        return Response::json($data);
    }

答案 1 :(得分:1)

将此添加到您的查询->get();

public function makeTable()
      {
        $data = hotelroom::where('hotel_id', '=', $request->get('value'))->get();          
        return Response::json($data);
    }

还要在键盘上按ctrl + shift + c来监视脚本是否正在执行

答案 2 :(得分:0)

谢谢大家的支持,我努力通过研究此代码使它正常工作(类似的问题) Retrieve records into table using Ajax in Laravel