新的会话cookie直到下一个服务器请求才提供
new Session cookie not served up until next server request
嗨,伙计们,所以我正在Codeignator中开发一个应用程序。基于三个选择标签来更新内容。首先是一个城市,它填充该城市的位置选择标签,同时使类别选择标签可见。已经成功设置了一堆ajax调用。内容根据ajax调用进行更新。现在我点击内容链接来查看内容。成功但当我点击浏览器的返回按钮时,我会把选择标签搞砸。所以我意识到我需要一个会话变量,这样当用户点击浏览器的后退按钮时,我可以让他处于相同的选择标记阶段。我暂时能够成功存储会话比方说城市。然后我用
$(document).ready(function () {
$city="<?php echo $this->session->userdata('city'); ?>";
alert($city);
});
检查是否一切正常。现在的问题是洛杉矶(LA):1伦敦:2
场景1:我选择LA,然后查看加载的内容,点击查看内容,然后点击浏览器的返回按钮,然后得到空白警报框。但如果我重新加载,我会收到中1的警报
场景1之后的场景2:我选择洛杉矶,然后选择伦敦查看内容,然后返回,在警报框中看到1。我重新加载我在alertbox中看到的页面2所以我深入研究了这个链接,找到了问题的原因。。。看起来刷新的会话只在下一个服务器请求中提供。正如你所看到的我的问题,我想要刷新的信息,这样我就可以让我的用户保持在他们停止的状态。
关于如何解决这个问题,有什么建议吗?
这就是cookie的工作方式。随客户端的请求一起发送。
解决方法是手动设置$_COOKIE
变量:
setcookie('yourcookie', 'something', time()+3600, '/', 'http://example.com', false, true);
$_COOKIE['yourcookie'] = 'something';
// yay I can now access it right away
echo $_COOKIE['yourcookie'];
更新
现在我想我误解了你的问题。在使用浏览器后退按钮时,您似乎遇到了问题?这是正确的吗?如果是这样,您将始终获得页面的先前状态,并且cookie确实不会被设置(因为它将从浏览器缓存中检索它)。我认为唯一可行的方法是通过一些脚本(即JS)刷新页面,但这会很烦人。或者通过对服务器的AJAX调用(新请求)来检索cookie值。
- 如何检测第三方广告服务器请求
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- 如何在服务器仍在处理以前的请求时对ajax请求进行排队
- 在node.js中从设备向服务器发送一个多部分请求
- Javascript onclick需要点击两次,然后会创建越来越多的服务器请求
- 新的会话cookie直到下一个服务器请求才提供
- 跨来源请求被阻止-如何在没有访问服务器的情况下绕过它
- 在此服务器上找不到请求的-表单验证(位于localhost端口80的Apache/2.4.9(Win32)PHP/5.5
- Android/Chrome jQuery AJAX请求在到达服务器之前失败,并出现parserror
- 将所有angular2捆绑包包含在index.html中会使导入从内存获取数据,而不是再次从服务器请求数据
- web工作程序中不同的服务器请求行为
- Angular2 发布请求未向服务器发送正确的数据
- 节点.js接受 POST 请求的服务器
- 跨节点服务器上的多个 API 请求维护数据
- 对服务器的 GET 请求返回 net::ERR_CONNECTION_REFUSED
- 在Firefox中,当type=submit for按钮时,请求服务器失败
- 请求服务器如何扩展以满足更大的流量需求
- 是否有办法在javascript或php中查看客户端设备的信息,是哪个请求服务器?这个设备是手机、平板电脑还是个人电脑?
- 在HTML/JS请求服务器时处理302状态代码
- 是否有可能模拟一个facebook跟踪像素请求服务器端