laravel的缓存对我有效,但在不同浏览器中的值相同。
我正在尝试在laravel中设置会话,并通过ajax调用设置会话变量,然后在另一个ajax调用中获取该会话变量。
$.ajax({
type: "post",
url: url+'setdata',
data: $('form#data').serialize(),
dataType: "json",
processData: false,
async: false,
success: function (data) {
}
});
$.ajax({
type: "post",
url: url+'getdata,
data: $('form#data').serialize(),
dataType: "json",
processData: false,
async: false,
success: function (data) {
}
});
在第一个ajax请求中,我从laravel中的一个控制器调用一个函数。此功能执行:
Session::put('examplekey', 800);
在第二个请求中,控制器函数检索会话ID:
$var = Session::get('examplekey');
return array($var);
我的问题是,在第二次ajax调用中,会话消失了。如何在纯php与session_start();
中为同一用户设置相同的会话答案 0 :(得分:2)
我遇到了同样的问题,并找到了一个潜在的解决方案:
我发现了与laravel 3相关的类似问题。对于要在ajax调用中持续存在的会话,您需要正确返回响应。
return json_encode($response);
这导致了问题。它似乎不是一个有效的响应,使会话能够持久存在。将其更改为:
return Response::json($response);
这可以使会话保持不变!
由于某种原因,正常表单提交或调用方法允许第一个,但ajax不允许。
我在其他地方看到了影响会话的方法中有关echo语句的引用 - 我认为返回的行为必须与echo相似
这是触发解决方案的帖子: http://forumsarchive.laravel.io/viewtopic.php?id=1304