مرتضی رحمانی
4 سال پیش توسط مرتضی رحمانی مطرح شد
3 پاسخ

خطای Invalid JSON response در لاراول Datatable

دوستان سلام!
در لاراول 8 از پکیج yajra/datatable استفاده کردم و به ارور خوردم.

ارور جیسان

Controller

public function index()
{
    return view('admin.article.index');
}

public function datatable()
{
    $data = Article::all();
    return Datatables::of($data)
        ->addIndexColumn()
        ->addColumn('action', function ($row) {
            $actionBtn = '<a href="javascript:void(0)" class="edit btn btn-success btn-sm">Edit</a> <a href="javascript:void(0)" class="delete btn btn-danger btn-sm">Delete</a>';
            return $actionBtn;
        })
        ->rawColumns(['action'])
        ->make(true);
}

Router

Route::resource('articles', 'Back\ArticleController');
Route::get('articles/datatable', 'Back\ArticleController@datatable')->name('article.datatable');

Javascript

    $(function() {
        $('#articles_table').DataTable({
            processing: true,
            serverSide: true,
            ajax: '{{route('article.datatable')}}',
            columns: [
                {data: 'DT_RowIndex', name: 'DT_RowIndex'},
                {data: 'thumbnail', name: 'thumbnail', orderable: false, searchable: false},
                {data: 'title', name: 'title'},
                {data: 'short_description', name: 'short_description'},
                {data: 'keywords', name: 'keywords'},
                {data: 'view', name: 'view'},
                {data: 'updated_at', name: 'updated_at'},
                {data: 'action', name: 'action', orderable: false, searchable: false},
            ]
        });
    });

Blade

<!--begin: Datatable-->
<table class="table table-separate table-head-custom" id="articles_table">
    <thead>
        <tr>
            <th>#</th>
            <th>تصویر</th>
            <th>موضوع</th>
            <th>خلاصه مطلب</th>
            <th>کلمات کلیدی</th>
            <th>بازدید</th>
            <th>تاریخ انتشار</th>
            <th>تنظیمات</th>
        </tr>
    </thead>
<tbody></tbody>
</table>
<!--end: Datatable-->

ممنونم از دوستانی که راهنمایی میکنن 🙏


ثبت پرسش جدید
مرتضی رحمانی
تخصص : توسعه دهنده وب
@mortezarahmani 4 سال پیش مطرح شد
0

مشکل حل شد.

راه حل :
وقتی داخل routes از resource استفاده میشه دیگه امکان نداره روت دیگه ای تعریف کرد که url اون اسم روت resource رو داشته باشه
پس باید لاین زیر رو :

Route::get('articles/datatable', 'Back\ArticleController@datatable')->name('article.datatable');

به این شکل تغییر داد :

Route::get('article/datatable', 'Back\ArticleController@datatable')->name('article.datatable');

مجید
تخصص : Laravel-Nuxt
@MajidDeveloper 4 سال پیش مطرح شد
0

@mortezarahmani
این دوتا route ی که نوشتی یکی هستند!


مرتضی رحمانی
تخصص : توسعه دهنده وب
@mortezarahmani 4 سال پیش مطرح شد
0

@MajidDeveloper
یکی نیستند لاین اول articles هست اما لاین دوم article.
درواقع مهم اینه که articles نباشه چون با روت قبلیش که از resource استفاده کردم هم نام نشه!


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام