Не удалось вызвать Ajax в Datatables. возвращает 404 не найдено - PullRequest
0 голосов
/ 12 мая 2019

Я получаю предупреждение DataTables: таблица id = DataTables_Table_0 - ошибка Ajax. Корректные данные возвращаются в большинстве случаев, но после каждых трех или четырех вызовов это предупреждение появляется без данных, загруженных в таблицы данных. Может кто-нибудь определить, что не так с моим кодом. Я новичок в веб-разработке.

После отладки я обнаружил, что при появлении этого предупреждения не отправляется вызов контроллеру. Консоль говорит 404 Не найдено. Я думаю, что это маршрут не найден. Но тогда почему он загружается в большинстве случаев. Я также поместил Info ($ request) в контроллер, и журнал Laravel пуст, когда появляется эта ошибка.

Я использую Laravel 5.8. HTML-код:

    <div class="box-body">
        <table class="data-table display compact">
            <thead>
            <tr>
                <th width="50px">Action</th>
                <th>Date</th>
                <th>Ref. No.</th>
                <th>Supplier</th>
                <th>Inv. No.</th>
                <th>Inv. Date</th>
                <th>Total</th>
                <th>Freight</th>
                <th>Discount</th>
                <th>Cash</th>
                <th>Net Total</th>
                <th>Remarks</th>
                <th>Status</th>
            </tr>
            </thead>

            <tbody>

            </tbody>
        </table>
    </div>

Код Ajax:

            var table = $('.data-table').DataTable({
                processing: true,
                serverSide: true,
                ajax: "{{ route('purchlist') }}",
                columns: [
                    {data: 'action', name: 'action', orderable: false, searchable: false, width: "50px"},
                    {data: 'date', name: 'date'},
                    {data: 'refno', name: 'refno'},
                    {data: 'title', name: 'title'},
                    {data: 'sup_invno', name: 'sup_invno'},
                    {data: 'sup_invdate', name: 'sup_invdate'},
                    {data: 'total', name: 'total'},
                    {data: 'freight', name: 'freight'},
                    {data: 'discount', name: 'discount'},
                    {data: 'cash', name: 'cash'},
                    {data: 'nettotal', name: 'nettotal'},
                    {data: 'remarks', name: 'remarks'},
                    {data: 'status', name: 'status'},
                ]
            });

и код контроллера:

    public function index(Request $request)
    {
        $branch_id=session()->get('lbranch','0');
        if ($branch_id==0){
            return redirect()->route('login');
        }

       if ($request->ajax()) {
            $data = DB::table('purchases')
                ->where('purchases.branchid',$branch_id)
                ->where('accounts.branchid',$branch_id)
                ->leftjoin('accounts','purchases.account_code','=','accounts.code')
                ->select('purchases.*',
                    DB::raw('(CASE 
                        WHEN purchases.posted = "1" THEN "Posted" 
                        ELSE "Unposted" 
                        END) AS status'),
                    'accounts.title')
                ->latest()->get();

            return Datatables::of($data)
                ->addIndexColumn()
                ->addColumn('action', function($row){
                    $btn = '<a href="javascript:void(0)" data-toggle="tooltip"  data-id="'.$row->id.'" data-original-title="Edit" class="edit btn btn-primary btn-sm editPurchase"><i class="fa fa-edit"></i></a>';
                    $btn = $btn.' <a href="javascript:void(0)" data-toggle="tooltip"  data-id="'.$row->id.'" data-original-title="Delete" class="btn btn-danger btn-sm deletePurchase"><i class="fa fa-trash"></i></a>';
                    return $btn;
                })
                ->rawColumns(['action'])
                ->make(true);
        }
        return view('purchases',compact('purchases'));
    }
...