2013-03-13 5 views
12

Der folgende Code funktioniert in FF Fein:JavaScript-Code für Cookie funktioniert nicht in 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=/"; 

Aber nicht in Chrome. Wenn ich Chrome verwende und in der Konsole document.cookie sehe, um Cookies anzuzeigen, ist der Cookie c_odi nicht vorhanden. Aber wenn ich das gleiche in FF mache, ist es. Wie können wir Cookies in Chrome funktionieren lassen? Die Cookies, die von PHP hinzugefügt wurden, sind in Ordnung, aber nicht diese in JavaScript, und ich muss diesen Cookie über JavaScript an dieser Stelle hinzufügen.

Antwort

0

Versuchen Sie, diese Linie zu ersetzen:

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

mit dieser:

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

Sie würden unescape verwenden, wenn Sie versuchen, Wert zu lesen, aber Sie werden menage, wenn die Zeit kommt:

)
+0

aber der Wert 'orderdetailid' ist nur eine ganze Zahl. – user961627

+0

Gut für den Fall :) Haben Sie Cookies in Ihrem Chrome-Browser aktiviert? – sbgoran

+0

Ich mache ... die PHP-Cookies funktionieren. – user961627

0

Scheint, wie es für mich arbeiten ist:

enter image description here

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

Mindestens zeigt das Cookie in dev-Tools auf, wie Sie sehen können. Allerdings habe ich den jQuery-Selektor $('#orderdetailid').val() durch einen konstanten Wert ersetzt, wie Sie sehen können. Stimmt etwas mit diesem Wert oder dem Element, das den Wert enthält, nicht?

+0

Bestätigt, dass dies auch für Chrome 25 funktioniert. Selbst wenn ich das '$ ('# orderdetailid') .val()' so belasse, dass es 'undefiniert' ist, funktioniert es immer noch. – Chad

+0

Hmm das ist merkwürdig, wie werden dann in Chrome Cookies aufgerufen? Wenn ich zu "Console" gehe - die letzte Option auf der linken Seite (nicht Ressourcen), dann, wenn ich document.cookie eintippe, ist der Cookie nicht da. Ich habe das gleiche mit der Geige gemacht, mit der du mich verlinkt hast, aber während es unter 'Cookies> fiddle.jshell.net' ist, ist es nicht in 'document.cookie' enthalten.Versuchen Sie, dies in der Konsole einzugeben: 'alert (document.cookie);' – user961627

+0

Dies ist wahrscheinlich ein Cross-Site-Problem. Im JSFiddle-Beispiel wird das Skript zum Setzen des Cookies von fiddle.jsshell.net geladen. Daher wird der Cookie auch für diese Domäne festgelegt. Wenn Sie in der Entwicklerkonsole document.cookie eingeben, werden nur die Cookies für die Domäne jsfiddle.net angezeigt. Könnte das auch das Problem mit Ihrem Szenario sein? I.e. Die Domäne des Skripts, das den Cookie erstellt, und die Domäne, in der er verwendet/gelesen werden soll, müssen identisch sein. –

40

Dieses Problem kann auftreten, wenn Sie Ihren Code als file:///C:/.../xxx.html anstelle von http:// localhost/xxx.html öffnen. Chrome speichert keine Cookies (da es keine Domäne und keine HTTP-Kommunikation gibt) in file:// Fall.

paar Links von Interesse:

+0

Warum benötigt Chrome nur dann Cookies mit einer Domain und HTTP-Kommunikation, wenn IE und Edge dies nicht tun? –

+0

@ds_secret: Ich habe das in IE8 getestet und es verhält sich genauso wie Chrome - auf "file: //" hat es _not_ nicht die Cookies gespeichert, während auf "http: //" es getan hat. Auf der anderen Seite scheint FF einige Abhilfe zu haben, es speichert die Cookies sogar auf "file: //". –

+0

Gibt es eine Problemumgehung dafür, da die meisten meiner "Kunden" Chrome, nicht Edge, IE oder Firefox verwenden? –

0

Vergewissern Sie sich die Adressleiste URL der Domäne übereinstimmt. In Chrome, wenn Sie domain = www.site.com einstellen und dann Ihre Seite im Browser testen, fehlt das www. Es wird nicht funktionieren.

0

Chrome speichert keine Cookies von den Seiten, die vom lokalen Dateisystem geladen werden. Wenn Sie beispielsweise im lokalen Browser auf eine HTML-Datei im Chrome-Browser zugreifen (z. B. Datei: /// C: /Users/deepak.r/Desktop/test.html), werden Cookies nicht unterstützt.

+0

Sie sollten dies ausarbeiten, das ist eine sehr schwache Antwort. –

Verwandte Themen