2017-02-22 10 views
0

でのsetIntervalでAJAXを行うにはどのように、私はAJAXを行うと、setIntervalでページを更新し、次のようにすることができます通常のPHPで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を示している私が望むものではない穴のhtmlページ。

単純なルーティングと見やすいデータのために、その罰金。ページを更新せずにコンテンツを更新するために2秒ごとにビューを更新する...非常に複雑に思えます。

これをLaravel 5.4でどのように実装できるかについてのご意見は大変ありがたいです。

+1

を行う - > JSON(配列( 'JSON '=> $ results_array []) – Surace

答えて

0

あなたはほぼそこにいます。ただ、あなたはそれを間違ってフォーマット戻ってきている。代わりに

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

を使用すると、リターンリターン応答を表示しない()JSONレスポンスを返すと仮定

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

'return response() - > json($ results_array);'結果はページに表示されますが、ajaxリクエストの成功メソッドからは出力されません。 – anagnam

+0

あなたはURLにナビゲートしており、ajaxでそれを呼び出さない – zedling

+1

はい、あなたは正しいです。愚かな私;-) – anagnam

関連する問題