【问题标题】:Javascript array equivalent of json_encode() and setcookie() in PHPJavascript 数组等价于 PHP 中的 json_encode() 和 setcookie()
【发布时间】:2021-02-20 07:15:18
【问题描述】:

在 PHP 中,我有一个用 JSON 编码的数组,然后我变成了一个 cookie。

<?php 

    $array = array("name" => "bob", "age" => "20");
    $arrayJSON = json_encode($array);
    setcookie("name", $arrayJSON, time() + (86400 * 33), "/");

?>

我现在正尝试用 Javascript 做同样的事情。 json_encoding Javascript 数组然后将其设置为 cookie 的 Javascript 等价物是什么?这是我目前所拥有的:

<script>

    var array = new Array();
    array["name"] = "bob";
    array["age"] = "20";
    // Need help here
    array = *javascript_json_encode*(array); // Do the Javascript equivalent of PHP's json_encode();
    document.cookie = "name="+array;

</script>

我正在尝试这样做,以便 Javascript cookie 的格式与 PHP cookie 的格式相同。当您在浏览器控制台输入“document.cookie”时,我需要 Javascript cookie 格式如下。

我需要将"name: bob""age: 20" 变成%7B%22name%22%3A%22bob%22%2C%22age%22%3A%2220%22%7D"。别管我是怎么做的。

【问题讨论】:

  • 我想我需要一些不同的东西。 JSON.stringify() 用于将 JSON 对象转换为字符串。我正在尝试将 Javascript 关联数组转换为 JSON 字符串
  • JS 没有“关联数组”之类的东西。 JS中有objectsarrays。如果您想要键值对,请使用对象,而不是数组。
  • 如果你想要键值对,使用对象,而不是数组。
  • 就像我说的,如果你想要键值对,使用对象,而不是数组。

标签: javascript php arrays json cookies


【解决方案1】:

将我的 cmets 转换为答案。 PHP 处理数组的方式与 JS 不同——它使用一种结构来处理顺序递增的整数结构和键值对字典/类似哈希图的结构。

JS 数组只接受连续整数,所以const a = new Array(); a["foo"] = "bar" 根本上是错误的——几乎没有任何用例可以在数组对象上设置这些属性,即使它看起来有效。

如果您需要键值对结构,请使用 objectMap。如果要将其字符串化为 JSON,请使用 JSON.stringify。如果要将其编码为 URI 组件,请使用 encodeURIComponent

把它们放在一起:

const obj = {name: "bob", age: 20};
const json = JSON.stringify(obj);
const encoded = encodeURIComponent(json);

console.log(obj);
console.log(json);
console.log(encoded);

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 2011-05-29
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2017-06-13
    • 2015-02-10
    相关资源
    最近更新 更多