2015-05-11 30 views
4

這裏是我的情況:Laravel獲取會話使用JavaScript加載時

- 我處理一個Excel文件,這些會花了大約〜10分鐘
-While處理,我要發送到的用戶反饋目前,我們正在處理

我的想法是使用會話也將增加,而加工價值,並獲得該屆會議使用javascript在當前視圖
這是我的腳本:

<script type="text/javascript"> 
    $(document).ready(function() { 
     var element = document.getElementById("progress"); 
     setInterval(
      function(){ 
       element.innerHTML = "{{Session::get('progress')}}"; 
      },500 
     ); 
    }); 
</script> 


和地方在我的控制器,讓我們只說是這樣的:

$i = 0; 
    while(!$done){ 
     processingComplicated(); 
     Session::put('progress', $i); 
     Session::save(); 
    } 


我的基本觀點:

<div id="progress">0</div> 

基本上,我想要的當前頁面獲取會話數據並更新vie w(id =「progress」),但它不會改變。
可以這樣做嗎?謝謝。

+0

它不能做你想要的方式 - 你需要有該頁面重新加載以實際獲得新的會話數據。很多人使用iframe或使用AJAX來實現這一點 - 主要的一點是,您需要實際加載PHP文件以獲取更新後的值,您不能只將會話var放在頁面的某個地方,並期望它可以神奇地更新而不更新頁面。 – alexrussell

回答

1

使用AJAX更新視圖

$(document).ready(function() { 
    var element = document.getElementById("progress"); 
    setInterval(
     function(){ 
      $.get("processing-status", function(data) { 
       element.innerHTML = data; 
      }); 
     },500 
    ); 
}); 

而在你的路徑,控制器或任何你想要

Route::get('/processing-status', function() 
{ 
    return Session::get('progress'); 
}); 
+0

嗯,不能讓它工作.. –

+0

你還在做Session :: put嗎?如果你通過調試訪問/處理狀態它顯示什麼東西? – SkarXa

+0

「0」 這是正確的,因爲我把 Session :: put('progress',0); Session :: save(); 之前呈現上傳頁面, 我覺得有一個腳本的問題。, –