如何使用javascript序列化关联数组将其保存在cookie中,然后用php读取它?

时间:2013-04-16 19:30:28

标签: php javascript cookies

首先我知道有很多类似于我的问题。当然我已经阅读了所有内容,但我找不到解决方案或了解如何解决我的问题。 这里是主要问题:我在java脚本中有一个关联数组,我希望将其序列化并将其保存在cookie中,然后我想通过使用unserialize方法用php读取这个cookie。所以我找不到一种序列化关联数组的正确方法。

有javascript

function renewCookie(){
    var myArray = {radius: radius, type:type, date:price, name:company}
    serializeValue = JSON.stringify(myArray);/* i used this serialize function that i found on web http://phpjs.org/functions/serialize/ but it didn't work.*/
    createCookie('parameters',serializeValue ,999);   
  }
  function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
  }

有php

<?php
    if (isset($_COOKIE["parameters"])){
            $UserParam = json_decode($_COOKIE["parameters"]);/*I unserialize the cookie because i suppose that it is serialized*/
            echo"<script>function readCookie(){ getLocationFunction(".$UserParam["radius"].",\"".$UserParam["type"]."\",\"".$UserParam["date"]."\",\"".$UserParam["name"]."\")}</script>";
    }
    else{setcookie("parameters","$defaultParam",time()+3600);}
?>
有人知道如何阅读javascript用php创建的cookie吗?我还解释说我有一个关联数组,因为我想要同时拥有multyvalue cookie和键的名称。请求帮我提供一些代码。如果你想要更多的解释请求。提前谢谢!!

更新:上面的代码可以正常使用你的建议,但它只适用于firefox和chrome,而不适用于opera,safari和explorer。任何人看到我做错了什么?

1 个答案:

答案 0 :(得分:3)

只需使用JSON序列化。

在javascript中:

serializeValue = JSON.stringify(myArray);
PHP中的

$UserParam = json_decode($_COOKIE["parameters"]);

请注意,在这种情况下$UserParam将在对象上。如果要强制使用关联数组:

$UserParam = json_decode($_COOKIE["parameters"], true);