我正在使用laravel 5.5,我的控制器中有以下代码:
function booking(Request $request)
{
parse_str($request->getContent(), $info);
Session::put('quotation.flight.passengerDetails', $info);
return Session::get('quotation.flight.searchType');
}
这就是我的路线( web.php ):
Route::post('ajax/flight/booking', 'Flight\flightController@booking');
这是我的ajax
$.ajax({
url: flagsUrl + "ajax/flight/booking",
type: 'POST',
data: opts.bookingData,
contentType: "json",
success: function (view) {
opts.callback(view);
},
error: function (xhr, ajaxOptions, thrownError) {
opts.callback("");
}
});
当我使用POST
通过ajax调用路线时,$info
不会分配到quotation.flight.passengerDetails
会话。
但是,当我在Chrome开发者工具中使用回复XHR 进行请求时,它确实有效吗?
答案 0 :(得分:1)
尝试在会话对象中使用Session::save()
或put()
个变量后使用push()
。
通常这可以确保在未被任何其他进程调用时调用save。
或者,您可以分析您的执行流程,并在您的脚本输出给用户之前,在输出收集结束时添加Session :: save(),无论是ajax还是html。
例如:
$kernel = $app->make('Illuminate\Contracts\Http\Kernel');
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
\Session::save();