Javascript - 缓存和 cookie 问题

标签 javascript php caching cookies

我在缓存页面上的 JavaScript 和 Cookie 方面遇到了相当令人沮丧的问题。

我得到了以下 JS 代码:

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    }
    return "";
}
    if (!getCookie("lang") == "{{Lang}}"){
        document.reload();
    }

{{Lang}} 在 PHP 后端被替换为完全相同的 cookie。

$template = str_replace("{{Lang}}", $lang, $template);

但这并不真正相关,因为该部分按预期工作。

问题在于当用户访问缓存页面时。

前面提到的JS就变成了

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    }
    return "";
}
    if (!getCookie("lang") == "FR"){
        document.reload();
    }

问题是,即使 Chrome 开发工具非常清楚地表明 cookie lang 设置为“EN”,而不是“FR”,页面也不会刷新。

有办法解决这个缓存问题吗?

最佳答案

JS中的不相等比较是!=,所以

getCookie("lang") != "FR"

关于Javascript - 缓存和 cookie 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29526278/

相关文章:

javascript - 如果重构,重构 AJAX 调用将不起作用

javascript - 如何 : PHP/Javascript communication

c# - 图片之间淡入淡出

php - 通过使用 php 将随机数插入 mysql 表中,将条目分组为 5 个随机组

symfony - 如何清除 Doctrine APC 缓存以进行生产?

javascript - 阻止 UIWebView 缓存 JavaScript 文件?

javascript - AJAX - HTTP header 值的默认字符编码是什么?

javascript - 如何通过表单数据和 Ajax PHP 保存数组

php - PHP MVC 框架中面向目标的设计

ios - 使用 AFNetworking API 的 NSURLCache 图像