在for循环中设置cookie

时间:2012-01-09 15:07:13

标签: javascript cookies for-loop

我从昨天起就一直在寻找解决这个问题的方法,我知道有很多类似的教程,但不知怎的,他们并没有为我的情况工作。

我想要做的是每当用户点击任何产品时设置cookie(它应该存储product_id)。所以这个产品将被添加到图表中。

我在Chrome的javascript控制台上检查它,但是有一个奇怪的错误“Uncaught SyntaxError:Unexpected token}”,它说没有任何存储的cookie。

   echo "<div id='products'>";
    for($i=0;$i<$num;$i++)
        {
            $ftc = mysql_result($result, $i, "product_image");
            $ftc2 = mysql_result($result, $i, "product_id");
            $ftc3 = mysql_result($result, $i, "product_name");
            $ftc4 = mysql_result($result, $i, "product_preis");
            $ftc5 = mysql_result($result, $i, "product_old_preis");
echo "<a href='details.php?product=".$ftc2."'>
<div class='products_list'>
        <img width='217px' height='323px' src='".$ftc."'/>
        <div class='alt_yazi2'><b>".$ftc3 ." &nbsp;&nbsp;&nbsp;&nbsp 
        <font style='float:right;'>".$ftc4."TL &nbsp;&nbsp<b style='text-decoration:line-through; float:right;'>".$ftc5."TL </b></font></b></a>
    </br>
    <div id='sepet'><a onclick='setCookie('ccname', '".$ftc2."', 'expiry');' href='#'>
    <img width='35px' height='25px' src='images/cart_icon.png'/>
        </a>
        </div>      
    </div></div> ";

        }
        echo "</div> ";

    ?>

这个javascript代码位于页面的头部:

<script type="text/javascript" >
// JavaScript Document

var today = new Date();
var expiry = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);

function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1) { endstr = document.cookie.length; }
  return unescape(document.cookie.substring(offset, endstr));
  }

function 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 null;
  }

function 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";
    }
  }

function SetCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
  }


</script>

提前致谢

3 个答案:

答案 0 :(得分:2)

错误可能是因为这个函数toGMTString()。如果您使用过script type="javascript",那么toGMTString()就可以了。由于您已使用script type="text/javascript",因此您无需转换为GMT格式,现在浏览器会为您执行此操作。

我建议您删除转换为GMT并尝试一下。

此致

答案 1 :(得分:1)

首先,如果您的浏览器告诉您有关javascript错误的信息,您应该能够记下它抱怨的代码行,并查看第一个错误。有时,错误将指向错误之后的一行代码而不是导致错误的实际行,但它通常在第一个错误的一般区域中。所以,你应该使用这些信息来帮助。

然后,我看到了这些问题:

问题#1:我不知道这是否是您的第一个问题,但由于引用,这不起作用:

<a onclick='setCookie('ccname', '".$ftc2."', 'expiry');' href='#'>

您尝试使用嵌套在单引号内的单引号。那不行。我不知道你的模板语言是如何工作的,所以我不完全确定如何修复它的这一部分,但从HTML / javascript的角度来看,你想使用嵌套在双引号内的单引号或者反之亦然像这样:

<a onclick='setCookie("ccname", ".$ftc2.", "expiry");' href='#'>

答案 2 :(得分:0)

GetCookie中的以下行是否可能导致意外的语法问题?

if (i == 0) break;

代码中的所有其他if语句都会将受影响的行包装在{}中,但这一行不会。如果将其更改为if (i == 0) { break; },这是否会解决您的语法问题?