【发布时间】:2014-05-16 17:42:43
【问题描述】:
当我在控制器操作中使用 Session::put() 向 Session 添加内容时,在我的视图中该数据不可用,在执行 AJAX 请求时使用 Session::get()。
Former 包也有同样的问题,我用它来构建漂亮的表单。它依赖于通过 Session 传递一些信息,用于将字段标记为有效/无效。此功能在使用 AJAX 时也不起作用。
我像往常一样在我的视图中设置了一个视图:
$this->layout->content = View::make('account.login')
对于 AJAX 请求,我不会以常规方式呈现布局,而是获取模板的特定“内容”部分并返回它:
$this->layout->content->renderSections()['content']
- 当我执行“正常”请求时,会话数据工作正常。
- 当我执行 AJAX 请求时,在 AJAX 调用期间控制器中设置的会话数据会被忽略。 AJAX 调用之前的任何会话数据集都可用。
我想知道 Laravel 是否对 AJAX 调用下的 Session 或上面的“renderSection()”方法有问题?
我已经检查了所有明显的问题:
- AJAX 请求使用与非 AJAX 请求相同的会话 ID。
- GET/POST 动词使用正确等。
复制:
- 在控制器操作中:
Session:put('foo','bar'); - 在 VIEW 文件中(在内容部分):
Session:put('foo2','bar2'); - 在 VIEW 文件中(在内容部分):
var_dump(Session::get('foo','bar'));// 在非 AJAX 调用中返回 'bar',但在 AJAX 调用中不返回任何内容(!!!) - 在 VIEW 文件中(在内容部分):
var_dump(Session::get('foo2'));// 按预期在 AJAX 和非 AJAX 调用中返回“bar2”。
在渲染视图时,控制器操作中设置的会话值似乎丢失了。因此,我的问题是 1)Laravel 中的 AJAX 与 SESSION 问题,还是 2)我不知道的 Session 与 renderElement() 问题?
【问题讨论】:
-
我遇到了类似的问题 - 使用 ajax 将表单提交到购物车功能。会话是在函数中创建的,但是一旦我转移到另一种方法,例如获取购物车,会话就不存在或创建!你解决了吗?