如何将php数组存储在一个cookie中,然后通过javascript读取它?

时间:2014-10-12 13:12:29

标签: javascript php arrays cookies

我需要正确存储php数组,假设我有数组:

$data=array();
$data['test1']="testa";
$data['test2']="testb";
$data['test3']="testc";
$data['test4']="testd";

我通过php存储它:

setcookie("data","test1=testa;test2=testb;test3=testc;test4=testd;",time()+(60)*(60));

但是当我需要通过javacript阅读时,里面的值显示为 test1%3Dtesta%3Btest2%3Dtestb%3Btest3%3Dtestc%3Btest4%3Dtestd%3B

为什么; 会被转义?

另外我不知道如何用javascript正确读取它, 我想检查cookie数组值是否已设置,然后写入网站: 使用 document.write(); 的功能与在php中的功能相同: echo $ data ['test1']; ,但是使用javascript语言。

1 个答案:

答案 0 :(得分:0)

为什么;被逃脱了?

http://curl.haxx.se/rfc/cookie_spec.html

  

NAME = VALUE此字符串是一系列字符,不包括分号,逗号   和白色空间。

<强> UNESCAPE

document.write(
  unescape("test1%3Dtesta%3Btest2%3Dtestb%3Btest3%3Dtestc%3Btest4%3Dtestd%3B")
);

encodeURIComponent('foo;bar') == "foo%3Bbar"
decodeURIComponent("foo%3Bbar") == 'foo;bar';

阅读Cookie JS

document.cookie - http://www.quirksmode.org/js/cookies.html

function readCookie(name) {
    var nameEQ = name + "=";
    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,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}