Laravel 4.1 - 使用会话持久性失败的多个ajax请求

时间:2014-06-04 07:33:03

标签: php ajax session laravel laravel-4

我有一个页面可以使同一个事件触发两个ajax请求,因此它们将同步触发。

这会导致Laravel 4.1出现一些问题。似乎ajax调用的每个请求都尝试重写会话,(我使用文件驱动程序),结果是写了一个新会话,留下了两个会话文件,最新一个是一个用过的。这个最新的没有会话数据,因此我的用户已注销。

从观察存储文件夹看,每个http请求似乎删除当前会话,然后重写新的会话文件。只要在重写会话之前没有其他http请求,这就没问题了。如果快速连续存在另一个请求(例如,在同一事件上触发同一页面的两个ajax调用),会话就会被破坏。我假设这是因为第二次调用会查找会话数据,并且找不到。

我还尝试了memcached和cookie驱动程序,我遇到了与文件驱动程序相同的问题。 我也尝试过使用' return response :: json(...)' ,正如我在论坛上的其他地方发现的建议解决方案,但没有快乐。

有什么建议吗?我没有找到任何合适的解决方案。当然,Laravel必须有办法处理快速连续的请求并坚持会议?

1 个答案:

答案 0 :(得分:0)

您应该$.ajax使用async: false选项。这将导致第二个ajax等待第一个ajax请求响应在它触发之前返回。对于setTimeout,如果第一个请求导致连接问题,则会出现问题。

您可以查看http://api.jquery.com/jquery.ajax/this link

中的完整$ .ajax文档