Как сделать AJAX с setInterval в Laravel 5.4

В обычном PHP я могу сделать AJAX и обновить страницу с помощью setInterval следующим образом:

script.js

 setInterval(function(){ $.get( "fetch_json.php", function( data ) { var jsonData = JSON.parse(data); $.each(jsonData, function(itemKey,itemObject){ // update div without refreshing the page } },1000); 

fetch_json.php

 $results_array = []; $file = new SplFileObject("file.csv"); $file->setFlags(SplFileObject::READ_CSV); foreach ($file as $row) { $results_array[] = $row[0]; $results_array[] = $row[1]; $results_array[] = $row[2]; $results_array[] = $row[3]; } echo json_encode($results_array); 

В Laravel 5.4 я больше не знаю, как это сделать. С контроллерами и представлениями передача данных кажется сложной.

Я попытался сделать следующее в моем контроллере:

 class PageController extends Controller { public function fetchData() { $results_array = []; $file = new \SplFileObject("file.csv"); $file->setFlags(\SplFileObject::READ_CSV); foreach ($file as $row) { $results_array[] = $row[0]; $results_array[] = $row[1]; $results_array[] = $row[2]; $results_array[] = $row[3]; } $json = json_encode($results_array); return view('page',['json'=>$json]); } } 

script.js

 $(document).ready(function(){ setInterval(function(){ $.ajax({ url: "/fetch-data", success: function( response ) { // update div } }); },1000); }); 

Маршруты

 Route::get('/fetch-data', 'PageController@fetchData'); 

Я думал, что, вызывая url: "/fetch-data" из $.ajax будет выплевывать данные json как ответ, но вместо этого он показывает мне всю html-страницу, которая не то, что я хочу.

Для простой маршрутизации и передачи данных назад для просмотра, это прекрасно. но обновляя представление каждые пару секунд, чтобы обновить содержимое без обновления страницы … кажется, очень сложно.

Любые идеи о том, как я могу реализовать это в Laravel 5.4, очень ценятся.

Вы почти там; просто вы возвращаете неправильный формат:

вместо

 return view('page',['json'=>$json]); 

делать

 return response()->json($results_array);