Jquery cookie未被正确读取或识别

时间:2014-12-15 01:50:19

标签: javascript jquery cookies

我有两个这种形式的饼干,一个是文本,一个是单选按钮选择。文本cookie工作正常,但单选按钮没有。

它应该如何工作: 输入文字,进行选择,按下按钮。将您发送到显示文本的下一页,并显示单选按钮的相关编号。

实际发生了什么: 输入文字,做出选择,按下按钮。将您发送到显示文本的下一页,但单选按钮选择中没有任何内容。

提前谢谢你。

JSfiddle - http://jsfiddle.net/q7nja8j9/

HTML -

<form action="javascript:void(0)">
    <input type="text" name="cookie" id="cookie" value="">
   <div id="pics">



   </div>
   <div id="radio">
   <input type="radio" name="char" id="char1" value="1">
   <input type="radio" name="char" id="char2" value="2">
   <input type="radio" name="char" id="char3" value="3">
   </div>
 <input type="button" name="Fight" id="saveCookie" value="Fight" onclick="window.location.href='Battle.html'">
 </form>

JS -

$(function(){
    // attach event listener to save cookie button
    $('#saveCookie').click(function(){
        // set cookie expiration to 1 year from today
        var expDate = new Date();
        expDate.setFullYear(expDate.getFullYear() + 1);
        // create cookie string
        var cookieStr = $('#cookie').val() + ";expires=" + expDate.toGMTString();
        // create cookie
        var cookieChar = $('input[name="char"]:checked').val() + ";expires=" + expDate.toGMTString();
        document.cookie = cookieStr;
        document.choice = cookieChar;
    });

});

1 个答案:

答案 0 :(得分:0)

我认为这个问题是相关的:How do I create and read a value from cookie?

首先,您有document.choice = cookieChar;而不是document.cookie = cookieChar;

但是根据我测试的内容,它无论如何都不起作用,因为你document.cookie = cookieStr; cookieStr的值类似于abc;expires=Tue, 15 Dec 2015 02:20:13 GMT,但你也需要设置一个cookie名称。所以它应该是:

document.cookie = 'cookieName=' + cookieStr;
document.cookie = 'char=' + cookieChar;

你是否有任何理由使用这样的cookie而不是将表格张贴到服务器端脚本(例如php)?这可能有所帮助:http://books.msspace.net/mirrorbooks/php5/067232511X/ch04lev1sec2.html

Javascript Cookie

您需要阅读此内容(至少):http://www.w3schools.com/js/js_cookies.asp

document.cookies不是一个简单的字符串变量,如果您尝试使用console.log(document.cookies),您会看到类似这样的内容:

"cookieName=abc; char=2; __utma=45159731; __utmc=45159731;"

这是为页面设置的所有cookie的连接,=之前的部分是cookie名称,=之后的部分是cookie值,而分号是将cookie分开。如果您设置一个没有cookie名称的cookie(正如您所做的那样),字符串将如下所示:

"2; cookieName=abc; char=2; __utma=45159731; __utmc=45159731;"

注意开头的额外“2”。这就是第二个cookie覆盖第一个cookie的原因 - 因为你没有为cookie指定名称,所以它只是用新值重新设置了第一个cookie。