2015-05-11 3 views
4

Вот мой сценарий:Laravel получить сеанс с JavaScript при загрузке

обработки -Я первенствует файл, который будет занимает около ~ 10 минут
-Хотя обработки, я хочу, чтобы отправить обратную связь с пользователем что мы в настоящее время обработки

Моя идея использования сессии, которая поместит значение при обработке и, получаем, что сеанс с использованием 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

Вы все еще занимаетесь сессией :: put? Если вы получаете доступ к/обработке-статус с отладки, что делать, чтобы показать его? – SkarXa

+0

«0» И это правильно, так как я положил Сессия :: put ('progress', 0); Session :: save(); перед отображением страницы загрузки., Я думаю, что есть проблема со сценарием., –

Смежные вопросы