cookie的JavaScript代码在Chrome中不起作用

cookie的JavaScript代码在Chrome中不起作用,javascript,google-chrome,cookies,Javascript,Google Chrome,Cookies,以下代码在FF中运行良好: var date = new Date(); date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); document.cookie = "c_odi" + "=" + $('#orderdetailid').val() + expires + "; path=/"; 但不是镀铬的。当我使用Chrome并在控制台中使用

以下代码在FF中运行良好:

var date = new Date();
date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
document.cookie = "c_odi" + "=" + $('#orderdetailid').val() + expires + "; path=/";

但不是镀铬的。当我使用Chrome并在控制台中使用
document.cookie
查看cookie时,
c_-odi
cookie不存在。但当我在FF中做同样的事情时,它是。我们如何在Chrome中制作饼干?PHP添加的cookie很好,但不是JavaScript中的cookie,此时我确实需要通过JavaScript添加此cookie。

尝试替换此行:

document.cookie = "c_odi" + "=" + $('#orderdetailid').val() + expires + "; path=/";
关于这一点:

document.cookie = "c_odi" + "=" + escape($('#orderdetailid').val()) + expires + "; path=/";

当您尝试读取值时,您必须使用
unescape
,但当时间到来时,您将看到:)

似乎它对我有效:


正如您所看到的,至少cookie出现在开发工具中。但是,正如您所看到的,我将jQuery选择器
$('#orderdetailid').val()
替换为一个常量值。该值或包含该值的元素是否有问题?

如果以
file:///C:/.../xxx.html
而不是http://localhost/xxx.html。Chrome不会在
文件://
案例中保存cookie(因为没有域,也没有http通信)

几个有趣的链接:


确保您的地址栏url与域匹配。在Chrome中,如果您设置domain=www.site.com,然后在浏览器中测试您的页面,但忽略了www,则无法正常工作。

Chrome不会存储从本地文件系统加载的页面中的cookie。例如,如果您正在从本地文件系统访问chrome浏览器中的HTML文件(例如:file:///C:/Users/deepak.r/Desktop/test.html),不支持Cookie。

但是
orderdetailid
值只是一个整数。以防万一:)您的Chrome浏览器中是否启用了Cookie?确认这在Chrome 25中也适用。即使我将
$('#orderdetailid').val()
保留为
未定义,它仍然可以工作。嗯,这很奇怪,那么在Chrome中如何访问cookie呢?当我转到“控制台”——左边的最后一个选项(不是参考资料),然后当我键入document.cookie时,cookie不在那里。我对你链接到我的小提琴也做了同样的操作,但是它在
Cookies>fiddle.jshell.net
下,却不在
document.cookie
中。尝试在控制台中键入此命令:
alert(document.cookie)这可能是一个跨站点问题。在JSFIDLE示例中,设置cookie的脚本是从fiddle.jsshell.net加载的。因此,还为此域设置了cookie。在开发人员控制台中键入document.cookie时,您将只看到域jsfiddle.net的cookie。这是否也是您的场景中的问题?也就是说,创建cookie的脚本的域和应该使用/读取cookie的域必须相同。当您执行
document.cookies
时,它会显示您所在域的cookie,该域是
jsfiddle.net
,您在fiddle上编写的代码在托管于
fiddle.jshell.net
的iframe中运行,因此它不会显示在
document.cookie
中。查看适当位置下的参考资料,您可以看到它工作正常。您应该详细说明,这是一个非常弱的答案。为什么只有Chrome要求您使用域和http通信来保存cookie,而IE和Edge不这样做。@ds_secret:我在IE8中测试了这一点,它的行为与Chrome相同-在“file://”上它没有保存cookies,但在“http://”上保存了cookies。另一方面,FF似乎有一些解决方法,它甚至在“file://”上保存cookies。有没有解决方法,因为我的大多数“客户端”都使用Chrome,而不是Edge、IE或Firefox?