Я довольно новичок в ajax и json и буду очень признателен за помощь.
Я делаю Ajax-вызов в Laravel Controller, чтобы вернуть некоторые поля из таблицы базы данных под названием «субъекты» и отобразить их в DataTable в Laravel View. Проблема заключается в том, что когда я открываю представление, то вижу JSON, а не Datatable.
Вот что вернулось в просмотре предметов / индекса:
{"draw":0,"recordsTotal":8,"recordsFiltered":8,"data":[{"id":"1","name":"Biology"},{"id":"3","name":"English Language"},{"id":"4","name":"Physics"},{"id":"5","name":"Chemistry"},{"id":"6","name":"Mathematics"},{"id":"7","name":"Mathematics"},{"id":"8","name":"English Language"},{"id":"9","name":"French"}],"queries":[{"query":"select count(*) as aggregate from (select '1' as `row_count` from `subjects`) count_row_table","bindings":[],"time":4.65},{"query":"select `id`, `name` from `subjects`","bindings":[],"time":0.41}],"input":[]}
Вот HTML в представлении / предметах / указателе
<table id="subjects_table" class="table table-bordered" style="width:100%">
<thead>
<tr>
<th>Id</th>
<th>Subject</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
Вот код в контроллере Laravel:
class SubjectsController extends Controller
{
public function index()
{
$subjects = Subject::select('id', 'name');
return Datatables::of($subjects)->make(true);
}
}
Вот код вызова Ajax:
$('#subjects_table').DataTable({
"processing": true,
"serverSide": true,
"ajax": "{{route('subjects.index')}}",
"columns":[
{"data": "id"},
{"data": "name"}
]
});
Вот определение маршрута в web.php:
Route::get('subjects/', 'SubjectsController@index')->name('subjects.index');
Любая помощь, которую вы можете оказать, будет очень признательна