【问题标题】:laravel variable not assigning to sessionlaravel 变量未分配给会话
【发布时间】:2018-09-07 03:46:25
【问题描述】:

我正在使用 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 开发者工具中使用 reply XHR 发出请求时,它确实有效?

【问题讨论】:

  • 需要更多信息哪个变量没有被设置?
  • 哦,$info 变量没有分配到 'quotation.flight.passengerDetails' 会话中
  • 你收到的错误是什么
  • 你在哪里调用 Session::save() 你的执行计划?
  • 理论上它不应该是强制性的。在实践中,我发现它解决了我在 laravel 中的很多会话问题。我通常做的是确保广告结束我自己的个人流程,我在输出到浏览器之前调用 Session::save()。

标签: php laravel session


【解决方案1】:

在会话对象中的put()push() 变量之后尝试使用Session::save()

通常这可以确保在没有被任何其他进程调用时调用保存。

或者,您可以分析您的执行流程并在您的输出收集结束时添加一个 Session::save(),就在您的脚本输出给用户之前,无论是 ajax 还是 html。

例如:

$kernel = $app->make('Illuminate\Contracts\Http\Kernel');
$response = $kernel->handle(
            $request = Illuminate\Http\Request::capture()
        );
\Session::save();

【讨论】:

  • 它就像一个魅力。非常感谢您的快速支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 2018-02-06
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多