【发布时间】:2014-02-12 06:43:20
【问题描述】:
早安,
我在提交表单时尝试删除 cookie,但它不起作用。
这是我的代码:
$("form").submit(function()
{
var cookiePath = "Table_Rows-"+$(location).attr('pathname');
alert(cookiePath);
$.removeCookie(cookiePath);
}
即使我使用这些代码删除了所有 cookie,它仍然不起作用:
$("form").submit(function()
{
for (var it in $.cookie()) $.removeCookie(it);
}
我将我的数据设置为通过 onbeforeuload 函数保存在 cookie 中
window.onbeforeunload = function(event)
{
storeRowData();
console.log("cookie saved!");
};
这是我的 StoreData() js
var storeRowData = function () {
var data = [];
$('#tblItemList tbody>tr').each(function () {
var $this = $(this),
pId = $this.find("#itemId").val();
pname = $this.find('input.itemSearch').attr("value"),
desc = $this.find(".description").val(),
quant = $this.find(".qty").val(),
rowId = $this.find(".rowId").val(),
deleted = $this.find(".hidden-deleted-id").val(),
price = $this.find(".price").val();
var temp = {
productName: pname,
itemId:pId,
description: desc,
quantity: quant,
price: price,
deleted:deleted,
rowId: rowId };
data.push(temp);
});
var cookiePath = 'Table_Rows-'+$(location).attr('pathname');
$.cookie(cookiePath, JSON.stringify(data), {expires: 7});
}
然后我检查是否在 document.ready 函数的页面上设置了 cookie:
if($.cookie('Table_Rows-'+$(location).attr('pathname'))){
loadCookieData();
$(".qty, .price").bind("keyup change", calculate);
}
else{
addRow(0);
}
还有我的 loadCookieData()
var cookiePath = 'Table_Rows-'+$(location).attr('pathname');
//console.log("loadCookieData:"+cookiePath);
temp = $.cookie(cookiePath);
var parseData = JSON.parse(temp);
//console.log(parseData);
var html ='';
for (i in parseData) {
subTotal = parseData[i].quantity*parseData[i].price;
var st = new Number(subTotal);
var sub = st.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
html+= (some html code to replace here)
}
$("#tblItemList tbody").html(html);
for (i in parseData){
var inputBox = "#itemName"+parseData[i].rowId;
$(inputBox).select2(sOptions);
}
calculate();
}
我当前的代码有问题吗??
谁能告诉我如何正确地做到这一点?非常感谢!
【问题讨论】:
-
cookiePath是 cookie 名称吗? -
注意:如果我没记错的话,如果您不在与设置 cookie 相同的子域/域或路径上,则无法修改/删除某些 cookie。
-
有时简单的 javascript 更简单
$(location).attr('pathname')->location.pathname -
会不会是您正在删除 cookie 并将其重新设置为 onbeforeunload?
-
我的建议是不要使用 onbeforeunload,因为它在某些浏览器或浏览器版本中存在一些问题。我认为 Opera 甚至在他们更改为 webkit 之前都没有它,如果这对你来说不是问题,你可以做
onbeforeunload = null或storeRowData = $.noop
标签: javascript jquery cookies