Laravel5.5で開発しています。
大量登録処理(数千件)があるので、ボタンクリックのタイミングでajaxでリクエストして
進捗状況を表示しようとしていますが、セッションに保存した情報が取得できません。
参考に下のは下記のサイトです。(fuelphpでやってますが処理的には同じ感じです。)
https://qiita.com/metal-wolf/items/26ad306f5d4946ead10c
View
js
1$(document).on('click','#regist', function(event){ 2 //通常のアクションをキャンセルする 3 event.preventDefault(); 4 //ローダー表示 5 $(".loader").show(); 6 7 $.ajax({ 8 headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}, 9 url: '/api/create_data', 10 type: 'POST', 11 }) 12 .done(function(data) { 13 //成功 14 15 }) 16 .fail(function(XMLHttpRequest, textStatus, errorThrown) { 17 //エラー 18 19 }) 20 .always(function() { 21 //完了 22 //ローダー非表示 23 $(".loader").hide(); 24 }); 25 26 27 28 // 進捗を1秒間隔で呼び出す 29 progressInterval=setInterval(function(){ 30 31 $.ajax({ 32 headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}, 33 url: '/api/get_progress', 34 type: 'GET', 35 }) 36 .done(function(data) { 37 //成功 38 console.log(data); 39 //ここでプログレスバーへ値を格納して進捗が見れるようにする予定 40 }) 41 .fail(function(XMLHttpRequest, textStatus, errorThrown) { 42 //エラー 43 }) 44 .always(function() { 45 //完了 46 //特定条件で停止する予定 47 //clearInterval(progressInterval); 48 }); 49 } , 1000); 50});
Controller
php
1 //登録処理 2 public function create_data(Request $request){ 3 $data_count=1000; 4 Session::put("data_count", $data_count); 5 6 //データ登録処理 7 for ($i = 0; $i < $data_count; $i++) { 8 //ここで登録処理(省略) 9 Session::put("data_current", $i); 10 } 11 return; 12 } 13 14 //進捗数取得 15 public function get_progress(Request $request){ 16 17 $current=0; 18 \Debugbar::info(Session::all()); 19 if(Session::exists("data_current"){ 20 $current = Session::get("data_current"); 21 } 22 23 return $current; 24 }
進捗を取得するprogressIntervalでget_progressを呼び出していますが、セッションに情報がないのでつねに0で返ってきてしまします。
セッションの保存方法や取得方法に間違いがあるのでしょうか?
データの登録処理は省略させていただきました。少し雑なコードですがよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/29 07:07