2013-03-13 66 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

相關問題