先贴测试代码吧   test.php<?php
function add($value){
setcookie("CookieName[]",$value); //CookieName换成radio控件的name
}
function getcookie(){ }
?><html>
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="PHPEclipse 1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>cookie</title>
</head>
<body onload="getcookie()">
  <form action="#" method="post">
  <?php
   for($i=0;$i<5;$i++){
   ?>
第<?php echo $i+1;?>选项<br>
  男<input type="radio" name="<?php echo $i;?>" value="男" onclick="add('男')"/>
  女<input type="radio" name="<?php echo $i;?>" value="女" onclick="add('女')"/><br>
    <?php
    }
print_r($_COOKIE['CookieName']);
   ?>
  </form></body>
</html>说说期望的效果吧!希望单击任一radio控件时自动添加一个cookie,其name为radio的name(可以看到各选项的name是不同的),值为所选择的radio值;页面重载或刷新时遍历页面的每一个radio控件,之前有做选择的显示其选择项,没做选择的则保持不变。
还有一点不明白,添加cookie要到下一个页面才能生效,或者说要刷新一次。那么是不是要在每次点击radio后都自动刷新一下呢?求大虾不吝赐教!!!!

解决方案 »

  1.   

    body onload事件的getcookie()是不会调用PHP代码中的getcookie()函数 ,其次就是同个域名下,JS代码写的COOKIE和PHP代码写的COOKIE是一样的。也就是说通过setcookie()函数写的COOKIE可以通过JS代码获取
      

  2.   

    这几个cookie的js函数一直都在用.共享给你.
    <html>
    <head>
    <meta http-equiv="Content-Language" content="en" />
    <meta name="GENERATOR" content="PHPEclipse 1.0" />
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>cookie</title>
    </head>
    <body onload="load()">
      <form action="#" method="post">
    <?php
    for($i=0;$i<5;$i++)
    {
    ?>
    男<input type="radio" name="ra_<?php echo $i;?>" value="男" onclick="add(this)"/>
    女<input type="radio" name="ra_<?php echo $i;?>" value="女" onclick="add(this)"/><br>
    <?php
    }
    ?>
      </form>
    <script type='text/javascript'>
    function add(o)
    {
    setCookie(o.name,o.value);
    }function load()
    {
    var ips = document.getElementsByTagName("input");
    for(var i=0,j=ips.length;i<j;i++){
    if(ips[i].value == getCookie(ips[i].name))
    {
    ips[i].checked = true;
    }
    }
    }function getExpDate(days, hours, minutes) {    var expDate = new Date( );    if (typeof days == "number" && typeof hours == "number" &&        typeof hours == "number") {        expDate.setDate(expDate.getDate( ) + parseInt(days));        expDate.setHours(expDate.getHours( ) + parseInt(hours));        expDate.setMinutes(expDate.getMinutes( ) + parseInt(minutes));        return expDate.toGMTString( );    }}// utility function called by getCookie( )function getCookieVal(offset) {    var endstr = document.cookie.indexOf (";", offset);    if (endstr == -1) {        endstr = document.cookie.length;
        }
        return unescape(document.cookie.substring(offset, endstr));}  // primary function to retrieve cookie by namefunction getCookie(name) {    var arg = name + "=";    var alen = arg.length;    var clen = document.cookie.length;    var i = 0;    while (i < clen) {        var j = i + alen;        if (document.cookie.substring(i, j) == arg) {            return getCookieVal(j);
            }        i = document.cookie.indexOf(" ", i) + 1;        if (i == 0) break;    }    return "";}  // store cookie value with optional details as neededfunction setCookie(name, value, expires, path, domain, secure) {    document.cookie = name + "=" + escape (value) +        ((expires) ? "; expires=" + expires : "") +        ((path) ? "; path=" + path : "") +        ((domain) ? "; domain=" + domain : "") +        ((secure) ? "; secure" : "");}  // remove the cookie by setting ancient expiration datefunction deleteCookie(name,path,domain) {    if (getCookie(name)) {        document.cookie = name + "=" +            ((path) ? "; path=" + path : "") +            ((domain) ? "; domain=" + domain : "") +            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
        }
    }
    </script>
    </body>
    </html>
      

  3.   

    谢谢3楼的分享,很好很强大!弱弱问下,如果想在一离开该页面就让COOKIE失效,该怎么弄呢?就是说一旦提交了表单,或者点击了浏览器上的后退,刚才设置的COOKIE就失效!