laravel变量未分配给会话

时间:2018-03-28 12:39:59

标签: php laravel session

我正在使用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 进行请求时,它确实有效吗?

1 个答案:

答案 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();