【问题标题】:Laravel datatable not showingLaravel 数据表未显示
【发布时间】:2020-04-09 15:14:17
【问题描述】:

我在 laravel 5.8 中使用 yajra laravel 数据表包。数据表未显示在我的视图中。我在 jquery 之后添加了数据表。我无法弄清楚问题出在哪里。帮我解决这个问题。谢谢。

数据表脚本:

$(document).ready( function () {
	$('#appointment-datatable').DataTable({
		processing: true,
		serverSide: true,
		ajax: '/get_appointment_data',
		columns: 
		[
			{
				data: 'id', 
				name: 'id'
			},
			{
				data: 'date', 
				name: 'date'
			},
			{
				data: 'time', 
				name: 'time'
			},
			{
				data: 'payment_status', 
				name: 'payment_status'
			}
		]
	})
} );

控制器代码:

    public function getAppointmentData(Request $request)
    {
        if ($request->ajax())
        {
            $getData = DB::table('jobs')->select('id', 'date', 'time', 'payment_status', 'amount')->get();
            $datatable = DataTables::of($json)->make(true);
            return $datatable;
        } 
    }
    public function ShowAppointments(Request $request)
    {
        return view('admin.show_appointments');
    }

路线:

Route::get('/show_appointments', 'NavigationController@ShowAppointments')->name('show_appointments');
Route::get('/get_appointment_data', 'NavigationController@getAppointmentData');

我想在 admin.show_appointments 视图中显示数据表返回 ShowAppointments 方法

视图中的 HTML:

        <table class="table" id="appointment-datatable">
            <thead>
              <tr>
                <th scope="col">id</th>
                <th scope="col">date</th>
                <th scope="col">time</th>
                <th scope="col">payment_status</th>
                <th scope="col">amount</th>
              </tr>
            </thead>
       </table>
我以前从未使用过数据表,而且我是 laravel 的新手。感谢你的帮助!

【问题讨论】:

  • 你能发布你遇到的错误吗
  • 您可以尝试在标题中使用您的 jquery 脚本。我认为您的 jquery 脚本丢失了。

标签: php json ajax laravel datatable


【解决方案1】:

进行如下更改:
希望对你有帮助

路由文件:

Route::get('/appointments','NavigationController@Appointments')->name('appointments');

HTML 代码:
把它放在你的头部

<meta name="csrf-token" content="{{ csrf_token() }}">


这是你的桌子:

<table class="table" id="appointment-datatable">
    <thead>
      <tr>
        <th scope="col">id</th>
        <th scope="col">date</th>
        <th scope="col">time</th>
        <th scope="col">payment_status</th>
        <th scope="col">amount</th>
      </tr>
    </thead>
</table>

控制器代码:

public function Appointments(Request $request)
    {
        if ($request->ajax()) {
            $data =  DB::table('jobs')->select('id', 'date', 'time', 'payment_status', 'amount')->get();
            return Datatables::of($data)
                    ->addIndexColumn()
                    ->make(true);
        }

        return view('admin.show_appointments');
    }

Ajax 代码:

$(function () {

    $('#appointment-datatable').DataTable({
        processing: true,
        serverSide: true,
        ajax: "{{ route('appointments') }}",
        columns: [
            {data: 'id', name: 'id'},
            {data: 'date', name: 'date'},
            {data: 'time', name: 'time'},
            {data: 'payment_status', name: 'payment_status'},
        ]
    });

  });

希望对你有帮助

【讨论】:

    【解决方案2】:

    尝试在标题中添加令牌

    <meta name="csrf-token" content="{{ csrf_token() }}" />
    

    并在您的 ajaxSetup 或数据中添加令牌

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    

    同时更改 getAppointmentData 函数。

    public function getAppointmentData(Request $request)
        {
            if ($request->ajax())
            {
                $getData = DB::table('jobs')->select('id', 'date', 'time', 
                'payment_status', 'amount');
                return DataTables::of($getData)->make(true);
            } 
        }
    

    【讨论】:

    • 我根据你的做了修改。但仍然没有显示数据表。 Route::get('/get_appointment_data', 'NavigationController@getAppointmentData'); 显示准确的 json 返回。问题出在哪里?
    • 问题已解决。有谁知道如何格式化从数据表中的 pdf 按钮导出的数据表 pdf?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 2020-06-21
    • 2021-06-04
    • 2019-10-29
    • 2020-05-12
    • 1970-01-01
    相关资源
    最近更新 更多