我正在与js工作来存储我的购物清单在cookie.it工程罚款在windows或Macintosh或安卓手机,但不能在iPhone手机浏览器工作(Safari和Chrome).在食品页面我添加食品到我的列表,刷新页面或重定向到其他页面后,cookie是空的.
我尝试了两种方法来编写cookie,也尝试了cookie参数,但问题仍然存在。
下面是设置cookie代码:
function bake_cookie(name, value) {
var date,
date = new Date();
date.setTime(date.getTime()+(30*24*60*60*1000));
var cookie = [name, '=', JSON.stringify(value), '; domain=', "", ';
path=','/; expires='+date.toUTCString()+"';"].join('');
document.cookie = cookie;
}
我的值是一个对象数组,如下所示:
[
{
count: 3
food_id: 2
kitchen_name: "kitchen 1"
pic: "url"
title: "food 1"
total_price: 21000
unit_price: 7000
},
{
count: 5
food_id: 7
kitchen_name: "kitchen 2"
pic: "url"
title: "food 2"
total_price: 25000
unit_price: 5000
},...
]
要更新它,首先我删除cookie如下:
function delete_cookie(name) {
document.cookie = [name, '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/;
domain=', ""].join('');
}
然后用新的输入调用bake_cookie()。
2条答案
按热度按时间tcomlyy61#
让我猜猜,你的cookie包含非ASCII字符?这在除iOS以外的所有环境下都能正常工作。一个解决方案是URL编码和URL解码。
另一个解决方案是使用js-cookie,它将透明地处理这个问题。
92vpleto2#
我可以看到这不是这种情况下的答案,但只是添加以防万一在未来对其他人有用.我发现iOS设备只会设置一个'过期'日期/时间,如果它被设置为UTC(.toUTCString())没有这个,它只会设置cookie作为会话cookie.