【问题标题】:jquery cookie set value to boolean truejquery cookie 设置值为 boolean true
【发布时间】:2012-04-02 21:24:22
【问题描述】:

我正在使用这个 jquery.cookie 插件,我需要将值设置为 TRUE 或 NULL/FALSE。

我正在尝试这样做:$.cookie('ff', true, { expires: 30, path: '/' }); 但它将值设置为字符串而不是布尔值。

有什么方法可以解决这个问题?

【问题讨论】:

  • 是的,当你阅读它时,将“true”字符串解析为布尔值。
  • 据我所知,cookie 中存储的任何内容都是字符串,因为 cookie 本身就是字符串。因此,任何形式的修复都将在它的 cookie 读取方面。
  • 问题是我正在用$this->input->cookie();的codeigniter函数阅读它,php有什么函数可以这样做吗?

标签: jquery cookies setcookie jquery-cookie


【解决方案1】:

Cookie 仅是字符串值。和gdoron commented一样,如果你想把这个值当作一个布尔值,你需要在cookie值被读回时将它解析回一个布尔值。

由于您评论说您正在使用 PHP 读取 cookie 值,请参阅Parsing a string into a boolean value in PHP

【讨论】:

  • 用php解析为布尔值的任何方式?
  • 是的,只需像我一样将它与字符串“true”进行比较。
【解决方案2】:

客户端:

$.cookie('ff', "true", { expires: 30, path: '/' });

服务器端:

$cookie = $this->input->cookie() == "true";

编辑:Cookie 是字符串。存储到 cookie 中的任何内容都需要转换为字符串。因此,您必须在其读取端进行字符串到布尔转换。上面我放了一个 PHP (CodeIgniter) 的例子。

【讨论】:

  • 不能说我理解反对票。这个答案有什么问题?
  • 感谢@MДΓΓ БДLL,我在想我自己。人们至少可以给出一个反对票的理由:(。我也很高兴知道它有什么问题。
  • 我猜他们认为他想要客户端答案而不是 php 一个。
  • @gdoron 我想你是对的。然后需要澄清我的答案。
【解决方案3】:

如果您只是想将 cookie 用作一种标志,那么只需检查 cookie 是否存在,如果不存在,您可以假设它是错误的:

const isSet = Boolean(cookie.get('my-cookie')) || false

这样您甚至不必担心 cookie 的实际值以及它是否存在。

【讨论】:

    【解决方案4】:

    另一种方法是

    var mycookie = !($.cookie("cookiename")=='false')
    

    或者:

    if(!($.cookie("cookiename")=='false')){ 
        //mycode 
    }
    

    如果值为 'false',则 ($.cookie("cookiename")=='false') 将返回 true,因此我们使用 ! 反转它返回错误

    如果该值不是'false',那么它将返回false,因此我们使用返回false的来反转它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-29
      • 2023-04-03
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多