Javascript 新会话cookie在下一个服务器请求之前未提供

Javascript 新会话cookie在下一个服务器请求之前未提供,javascript,ajax,codeigniter,session,cookies,Javascript,Ajax,Codeigniter,Session,Cookies,大家好,我正在Codeignator中开发一个应用程序。内容根据三个select标记进行更新。第一个城市填充该城市的Location select标记,同时使类别select标记可见。 已成功设置大量ajax调用。内容根据ajax调用进行更新。现在我点击内容链接查看内容。成功。。。但当我点击浏览器的“后退”按钮时,我会把选择标签弄得一团糟。 然后我意识到我需要一个会话变量,这样当用户点击浏览器的后退按钮时,我可以让他保持在相同的选择标记阶段。我现在能够成功地存储会话,比如说城市。 然后我用 $(

大家好,我正在Codeignator中开发一个应用程序。内容根据三个select标记进行更新。第一个城市填充该城市的Location select标记,同时使类别select标记可见。 已成功设置大量ajax调用。内容根据ajax调用进行更新。现在我点击内容链接查看内容。成功。。。但当我点击浏览器的“后退”按钮时,我会把选择标签弄得一团糟。 然后我意识到我需要一个会话变量,这样当用户点击浏览器的后退按钮时,我可以让他保持在相同的选择标记阶段。我现在能够成功地存储会话,比如说城市。 然后我用

$(document).ready(function () {
            $city="<?php echo $this->session->userdata('city'); ?>";
            alert($city);
        });
$(文档).ready(函数(){
$city=“”;
警报(城市);
});
检查是否一切正常。现在的问题是 洛杉矶(洛杉矶):1 伦敦:2

情景1: 我选择LA,然后查看加载的内容单击查看内容,然后点击浏览器的“后退”按钮,然后获得空白警报框。但如果我重新加载,则会在1中获得警报

场景1之后的场景2: 我选择LA,然后选择London view内容,然后返回,我在警报框中看到1。我重新加载alertbox中看到的2页面 所以我深入研究,找到了问题的原因。。。看起来刷新的会话仅在下一个服务器请求时提供。正如你所看到的我的问题,我希望刷新信息,这样我就可以让我的用户保持他们离开时的状态


关于如何解决这个问题有什么建议吗?

这就是cookies的工作原理。将随客户端的请求一起发送

解决方法是手动设置
$\u 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(因为它将从浏览器缓存中检索cookie)。我认为这唯一可行的方法是通过一些脚本(如JS)刷新页面,但这会很烦人。或者通过对服务器的AJAX调用(新请求)检索cookie值。

是的,我最终做了一些与您更新的答案类似的事情(我想您理解了更新部分中的问题)。使用隐藏输入存储上次选择的数据。然后当用户返回时。。使用js检索它并获得select值的早期状态,然后执行一个新的AJAX调用来获取基于该状态的内容。