使用AJAX时,Laravel会话数据未写入/更新/在视图中不可用
当我在控制器操作中使用使用AJAX时,Laravel会话数据未写入/更新/在视图中不可用,ajax,laravel-4,Ajax,Laravel 4,当我在控制器操作中使用Session::put()向会话添加内容时,在执行AJAX请求时,使用Session::get()在我的视图中该数据不可用 前一个包也有同样的问题,我用它来构建漂亮的表单。它依赖于通过会话传递一些信息,会话用于将字段标记为有效/无效。使用AJAX时,此功能也不起作用 我像往常一样设置视图,在我的视图中: $this->layout->content = View::make('account.login') 对于AJAX请求,我不使用常规的布局方式进行渲染,
Session::put()
向会话添加内容时,在执行AJAX请求时,使用Session::get()
在我的视图中该数据不可用
前一个包也有同样的问题,我用它来构建漂亮的表单。它依赖于通过会话传递一些信息,会话用于将字段标记为有效/无效。使用AJAX时,此功能也不起作用
我像往常一样设置视图,在我的视图中:
$this->layout->content = View::make('account.login')
对于AJAX请求,我不使用常规的布局方式进行渲染,而是获取模板的特定“内容”部分并返回它:
$this->layout->content->renderSections()['content']
- 当我执行“正常”请求时,会话数据工作正常
- 当我执行AJAX请求时,就会忽略AJAX调用期间控制器中的会话数据集。AJAX调用之前的任何会话数据集都可用
- AJAX请求使用与非AJAX请求相同的会话ID
- 正确使用GET/POST动词等
- 在控制器操作中:
会话:put('foo','bar')代码>
- 在视图文件中(在内容部分):
Session:put('foo2','bar2')代码>
- 在视图文件中(在内容部分):
var_dump(Session::get('foo','bar')代码>//在非AJAX调用中返回“bar”,但在AJAX调用中不返回任何内容(!!!)
- 在视图文件中(在内容部分):
var_dump(Session::get('foo2')代码>//按预期在AJAX和非AJAX调用中返回“bar2”
在呈现视图时,控制器操作中设置的会话值似乎丢失。因此,我的问题是:1)Laravel中的AJAX vs.SESSION问题,还是2)我不知道的SESSION vs.renderElement()问题?我也有同样的问题,只是找到了一个可能的解决方案: 我发现了一个与laravel 3相关的类似问题。要使会话在ajax调用中持久化,您需要正确返回响应
return json_encode($response);
这就是问题的根源。它不是一个有效的响应,可以使会话持久化。将其更改为:
return Response::json($response);
这使会话能够持久化
出于某种原因,普通表单提交或调用方法允许第一个表单提交或调用,但ajax不允许
我在别处看到过关于影响会话的方法中的echo语句的引用——我认为返回的行为必须类似于echo
这是触发解决方案的帖子:
我遇到了一个类似的问题—使用ajax向购物车函数提交表单。会话是在函数中创建的,但一旦我移动到另一个方法(如get cart),会话就不存在或不创建!你能解决问题吗?那太好了-很高兴它有帮助