1

大家好,我正在 Codeignitor 中开发一个应用程序。内容根据三个选择标签进行更新。第一个填充该城市的位置选择标签并同时使类别选择标签可见的城市。已成功设置了一堆 ajax 调用。内容根据 ajax 调用进行更新。现在我单击内容链接以查看内容。成功...但是当我点击浏览器的后退按钮时,我搞砸了选择标签。所以后来我意识到我需要一个会话变量,这样当用户点击浏览器的后退按钮时,我可以让他处于相同的选择标签阶段。我能够成功地存储会话让我们暂时说城市。然后我用

$(document).ready(function () {
            $city="<?php echo $this->session->userdata('city'); ?>";
            alert($city);
        });

检查一切是否正常。现在的问题是洛杉矶(LA):1 伦敦:2

场景1:我选择LA然后查看加载的内容点击查看内容然后点击浏览器的返回按钮然后得到空白警告框。但是如果我重新加载,那么我会收到1的警报

方案 1 之后的方案 2:我选择 LA,然后选择 London 查看内容,然后返回,我在警报框中看到1。我重新加载了在 alertbox 中看到的页面2所以我挖掘了这个链接并找到了问题的原因......看起来刷新的会话只在下一个服务器请求上提供。正如您可以看到我的问题,我想要更新的信息,以便我可以让我的用户保持与他们离开时相同的状态。

关于如何解决这个问题的任何建议?

4

1 回答 1

0

这就是cookies的工作原理。与来自客户端的请求一起发送。

$_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 值。

于 2012-08-26T13:04:12.903 回答