我有一个ajax调用,当DOM完成加载时会激活,但我试图阻止用户点击刷新的情况并通过存储会话变量再次触发ajax调用。 然而,通过AJAX请求存储会话条目似乎存在问题,请考虑以下代码段:
<?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'));
}
有什么想法吗?
答案 0 :(得分:2)
为了回答这个问题,这是自laravel 4.1以来的一个错误,其中会话处理因异步请求而变得不稳定。这里正在github issues中进行深入讨论。我的研究指出,基本上,Laravel在请求周期的最后部分保存会话,而ajax /异步请求的处理方式与浏览器的请求不同。
答案 1 :(得分:-1)
@Broshi你可以做这两件事吗?:
\Session::get('ajax_fired');
中的“\”。 var_dump
Session::all()
并将exit
放在\Session::put('ajax_fired',1);
之前。之后请告诉我结果。感谢。