【问题标题】:Laravel Ajax and Session issue?Laravel Ajax 和会话问题?
【发布时间】:2014-12-08 23:29:24
【问题描述】:

我有一个 ajax 调用,它在 DOM 完成加载时立即触发,但我试图通过存储会话变量来防止用户点击刷新并再次触发该 ajax 调用的情况。 然而,通过 AJAX 请求存储会话条目似乎存在问题,请考虑以下 sn-p:

<?php
function postMyAjax() {

$already_fired = \Session::get('ajax_fired'); // <-- Always returns NULL!
if ( ! empty( $already_fired ) ) {
    return Response::json(array('already fired'));
}

# Remember that we fired that call
\Session::put('ajax_fired',1); // <-- Fails to set?

return Response::json(array('ok'));

}

有什么想法吗?

【问题讨论】:

  • 为什么不在第一个请求被触发后在 cookie 中设置值并在你的 JS 中检查它?
  • 这是另一个不错的选择,但这并不能解决我的会话问题;/

标签: php ajax session laravel


【解决方案1】:

为了回答这个问题,这是自 laravel 4.1 以来的一个错误,其中会话处理因异步请求而变得不稳定。在 github issues 中对此进行了深入讨论。我的研究表明,基本上,Laravel 将会话保存在请求周期的最后部分,并且 ajax/异步请求的处理方式与来自浏览器的请求不同。

【讨论】:

    【解决方案2】:

    @Broshi 你能做这两件事吗?:

    1. 删除\Session::get('ajax_fired'); 中的“\”。
    2. 使用var_dump Session::all() 并将exit 放在\Session::put('ajax_fired',1); 之前。

    请让我知道之后的结果。谢谢。

    【讨论】:

    • 删除了\Session::get('ajax_fired'); 中的“\”,没有帮助。 Session::all() 也没有显示任何有用的信息...
    猜你喜欢
    • 2014-03-31
    • 1970-01-01
    • 2015-04-26
    • 2015-12-25
    • 2011-01-10
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多