Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未为寻宝脚本保存Cookie_Javascript_Jquery_Cookies - Fatal编程技术网

Javascript 未为寻宝脚本保存Cookie

Javascript 未为寻宝脚本保存Cookie,javascript,jquery,cookies,Javascript,Jquery,Cookies,第一次海报,长期读者 所以我需要创建一个快速而简单的寻宝程序。其思想是将一些值存储在cookie中,当用户单击具有匹配id的元素时,更新以下值。它还没有在那里,但是当这个人找到全部8个(在本例中)时,它会触发一些事情 现在,我已经让它大部分工作,但我遇到了一个大问题。cookie未被逐页存储。如果我只处理一个测试页面,那么就可以了——创建cookie,从中提取值并放入检查数组,计数器正确递增。此外,当cookie被更新时,新的值被很好地存储 然而,当我转到另一个页面检查cookie时,它就不见了

第一次海报,长期读者

所以我需要创建一个快速而简单的寻宝程序。其思想是将一些值存储在cookie中,当用户单击具有匹配id的元素时,更新以下值。它还没有在那里,但是当这个人找到全部8个(在本例中)时,它会触发一些事情

现在,我已经让它大部分工作,但我遇到了一个大问题。cookie未被逐页存储。如果我只处理一个测试页面,那么就可以了——创建cookie,从中提取值并放入检查数组,计数器正确递增。此外,当cookie被更新时,新的值被很好地存储

然而,当我转到另一个页面检查cookie时,它就不见了。现在我检查了一下饼干是否真的被放进去了,是的,它就在那里。但是有多个cookie都具有相同的名称(它们正在更新值,但这只是一页一页的更新,所以没有累积效应)

所以,我想我不明白为什么当我调用cookie并重置它时,它不会影响单个cookie,而是创建一个新的cookie

哦,我正在使用jQuery1.4.2和jQuerycookie插件

// if not present create default array and store in cookie cookie
if($.cookie('treasure_hunt') == null) {

var treasure = new Array(
    "arteContactEn",0,
    "arteCorpEn",0,
    "arteServicesEn",0,
    "arteRoomsEn",0,
    "arteDiningEn",0,
    "artePackEn",0,
    "arteHotelEn",0,
    "arteHomeEn", 0
)
   $.cookie('treasure_hunt', treasure, { expires: 7 });
}

// capture cookie info
var treasureFound = $.cookie('treasure_hunt');

// create check array and parse values into it
var treasureCheck = new Array();
var treasureCheck = treasureFound.split(',');

// function checks array and tallies total found items
function checkFound() { 
var foundItems = 0;

for(var i=0; i<treasureCheck.length; i++) {
    var value = treasureCheck[i];
    if(value == 1) {
        ++foundItems;
    }
}
// writes found items to span on page
$('.thProgress').text(foundItems);

}

// check number artefacts and write to page
var treasureTotal = treasureCheck.length / 2;
$('.thTotal').text(treasureTotal);

// on click checks element id against array and, if found, marks the following value as 1
$('.artefact-right, .artefact-left').click(function(){
var artefactID = $(this).attr('id');

for(var e=0; e<treasureCheck.length; e++) {
    var matchID = treasureCheck[e];
    var k = e + 1;

    if(matchID == artefactID) {
        treasureCheck[k] = 1;

        // checks for total found items
        checkFound();

        // updates cookie with new array
        $.cookie('treasure_hunt', treasureCheck, { expires: 7 });
    }

}

});
//如果不存在,则创建默认数组并存储在cookie中
if($.cookie('寻宝')==null){
var=newarray(
“阿尔泰接触”,0,
“arteCorpEn”,0,
“arteServicesEn”,0,
“arteRoomsEn”,0,
“arteDiningEn”,0,
“artePackEn”,0,
“阿泰伦酒店”,0,
“阿泰荷门”,0
)
$.cookie('寻宝',宝藏,{expires:7});
}
//捕获cookie信息
var FUNDED=$.cookie(“寻宝”);
//创建检查数组并将值解析到其中
var=newarray();
var-treasureCheck=treasureFound.split(',');
//函数检查数组并计算找到的项目总数
函数checkFound(){
var foundItems=0;
对于(var i=0;i根据,如果不希望cookie仅用于创建它的页面,则需要定义cookie的有效路径:

定义cookie有效的路径。默认情况下 cookie是创建cookie的页面的路径(标准) 浏览器行为)。如果您想使其可用,例如 在整个页面上使用路径:“/”。如果要删除cookie 对于特定路径,您需要在调用中包含该路径

所以我想应该是这样的:

$.cookie('treasure_hunt', treasure, { expires: 7, path: '/' });

另外,您的
var treasure=new Array()
声明末尾缺少了一个分号。

所有页面都在同一个域中吗?效果很好。感谢您的快速回复。:)谢谢您这么快回复我!这太不可思议了-我去拿了一碗汤,然后砰!问题解决了。