通过javascript中的ajax调用在laravel中设置var会话,并使用另一个调用相同的var值

时间:2014-02-27 00:22:01

标签: php jquery ajax laravel-4

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

中为同一用户设置相同的会话

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并找到了一个潜在的解决方案:

我发现了与laravel 3相关的类似问题。对于要在ajax调用中持续存在的会话,您需要正确返回响应。

return json_encode($response);

这导致了问题。它似乎不是一个有效的响应,使会话能够持久存在。将其更改为:

return Response::json($response); 

这可以使会话保持不变!

由于某种原因,正常表单提交或调用方法允许第一个,但ajax不允许。

我在其他地方看到了影响会话的方法中有关echo语句的引用 - 我认为返回的行为必须与echo相似

这是触发解决方案的帖子: http://forumsarchive.laravel.io/viewtopic.php?id=1304