将变量存储到会话中但有时显示为空

时间:2017-11-02 15:22:52

标签: php laravel session

我正在使用ajax和控制器在会话中对数据进行排序,但有时它会显示数据,有时显示为空,我必须使用Flash,因为我希望当我回到主页时会话为空。我该如何解决这个问题?

 $(document).on('click', '.btn_getbids', function(e) {
  $.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
    }});
   e.preventDefault();
 var form = document.forms.namedItem("booking-form"); 
 var formData = new FormData(form); 
 $.ajax({
    type: 'POST',
    url: 'addItem',
    contentType: false, 
    data: formData,
    processData: false,
    success: function (data) {   },
    });});

控制器

public function addItem(Request $request) {


$request->session()->flash('country', $request->country);
$request->session()->flash('administrative_area_level_1', $request->administrative_area_level_1);
$request->session()->flash('locality', $request->locality);
    }

Diaplaay Blade

      <div class="alert alert-success">
                     {{Session::get('country')}} <br>
                      {{Session::get('administrative_area_level_1')}} <br>
                     {{Session::get('locality')}} 

      </div>

1 个答案:

答案 0 :(得分:0)

使用flash()只会将数据存储到会话中,仅用于下一个请求

  

Flash数据

     

有时您可能希望仅在下一个请求中将项目存储在会话中。您可以使用flash方法执行此操作。使用此方法存储在会话中的数据仅在后续HTTP请求期间可用,然后将被删除。 Flash数据主要用于短期状态消息:

https://laravel.com/docs/5.5/session#flash-data

您希望使用put()将其存储在会话中。例如:

$request->session()->put('country', $request->country);

您可以使用forget()

从会话中删除值
$request->session()->forget('country');

或全部使用flush()

$request->session()->flush();

https://laravel.com/docs/5.5/session#deleting-data