2017-02-22 5 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에서는이 작업을 더 이상 수행하지 않습니다. 컨트롤러와 뷰를 사용하면 데이터 전달이 복잡해 보입니다. 나는 내 컨트롤러에서 다음을 수행 해봤

:

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

경로

Route::get('/fetch-data', '[email protected]'); 

내가 생각

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 그 $.ajax에서 url: "/fetch-data"를 호출하는 것입니다 응답으로 json 데이터를 침을 뱉어 라. 그 대신 나에게 w를 보여준다. hole 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