2017-02-22 223 views
0

在使用setInterval做AJAX在正常的PHP,我可以做AJAX與setInterval更新頁面如下:如何Laravel 5.4

的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', '[email protected]'); 

我的想法是由$.ajax調用url: "/fetch-data"會吐出json數據作爲迴應,而是向我展示w這不是我想要的。

對於簡單的路由和傳回數據來查看,它的罰款。但每隔幾秒更新一次視圖以更新內容而不刷新頁面......這似乎非常複雜。

關於如何在Laravel 5.4中實現這一點的任何想法,我都非常感激。

+1

你想返回JSON響應無法查看數據迴響應() - > JSON(陣列('JSON '=> $ results_array [])) – Surace

回答

0

你幾乎在那裏;只是你正在返回它的格式錯誤:

,而不是

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

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

with'return response() - > json($ results_array);'結果顯示在頁面上,但不是來自ajax請求的成功方法。 – anagnam

+0

然後你正在導航到的網址,而不是調用它與AJAX – zedling

+1

是的,你是對的。傻我;-) – anagnam