2013-03-13 33 views
12

下面的代码工作正常在FF不工作:JavaScript代码在Chrome

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。当我使用Chrome浏览器并在控制台中执行document.cookie查看cookie时,c_odi cookie不存在。但是当我在FF中也这样做时,情况就是如此。我们如何让Cookie在Chrome中工作?由PHP添加的cookie很好,但在JavaScript中没有这个,我确实需要通过JavaScript添加此cookie。这一个

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

回答

0

试图取代这一行

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

你将不得不使用unescape当您尝试读取数值,但是,当时间一到,你会MENAGE: )

+0

但'orderdetailid'值只是一个整数。 – user961627 2013-03-13 12:59:28

+0

好吧,以防万一:) 您的Chrome浏览器中启用了cookies吗? – sbgoran 2013-03-13 13:05:56

+0

我做的... PHP cookies正在工作。 – user961627 2013-03-13 13:12:10

0

似乎它适用于我:

enter image description here

http://jsfiddle.net/rQEnF/3/

至少饼干显示了在开发工具,你可以看到。不过,如您所见,我用一个常量替换了jQuery选择器$('#orderdetailid').val()。这个值或者包含该值的元素是否有问题?

+0

确认这在Chrome 25中也适用于我。即使当我离开'$('#orderdetailid').val()'以使它是'未定义'时,它仍然可以工作。 – Chad 2013-03-13 13:07:36

+0

嗯,这很奇怪,那么在Chrome中如何访问Cookie?当我去“控制台” - 左边的最后一个选项(不是资源)时,然后当我键入document.cookie时,cookie不在那里。我把你和我连接的小提琴做了同样的处理,但是当它在'Cookies> fiddle.jshell.net'下时,它不在'document.cookie'中。尝试在控制台中键入以下命令:'alert(document.cookie);' – user961627 2013-03-13 13:16:25

+0

这可能是一个跨站点问题。在JSFiddle示例中,设置cookie的脚本是从fiddle.jsshell.net加载的。因此,Cookie也为此域设置。在开发控制台中输入document.cookie时,您只能看到域jsfiddle.net的cookie。这也可能是你的情况的问题?即创建cookie的脚本的域以及它应该被使用/读入的域必须是相同的。 – 2013-03-13 13:24:10

40

如果您将代码打开为file:///C:/.../xxx.html而不是http:// localhost/xxx.html,则可能会出现此问题。 Chrome不会在file://的情况下保存cookie(因为没有域名,也没有http通信)。感兴趣

几个环节:

+0

为什么只有Chrome浏览器要求您在IE和Edge没有的情况下使用域名和http通信保存cookie。 – 2018-02-22 01:30:24

+0

@ds_secret:我在IE8中测试了它,它的行为和Chrome一样 - 在“file://”它没有保存cookie,而在“http://”它做了。另一方面,FF似乎有一些解决方法,即使在“file://”上也可以保存cookie。 – 2018-02-22 08:25:01

+0

有没有解决方法,因为我的大多数“客户”使用Chrome,而不是Edge,IE或Firefox? – 2018-02-23 01:22:26

0

确保你的地址栏中的URL的域相匹配。在Chrome中,如果您设置了domain = www.site.com,然后在浏览器中测试您的页面错过了www。它不会工作。

0

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

+0

你应该详细说明,这是一个非常微弱的答案。 – 2017-09-03 07:28:36

相关问题