我正在使用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>
答案 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();