Come posso impostare e annullare l'impostazione di un cookie utilizzando jQuery, ad esempio creare un cookie denominato test
e impostare il valore su 1
?
Come posso impostare e annullare l'impostazione di un cookie utilizzando jQuery, ad esempio creare un cookie denominato test
e impostare il valore su 1
?
Risposte:
Aggiornamento aprile 2019
jQuery non è necessario per la lettura / manipolazione dei cookie, quindi non utilizzare la risposta originale di seguito.
Vai invece a https://github.com/js-cookie/js-cookie e usa la libreria lì che non dipende da jQuery.
Esempi di base:
// Set a cookie
Cookies.set('name', 'value');
// Read the cookie
Cookies.get('name') => // => 'value'
Vedi i documenti su Github per i dettagli.
Vedi il plugin:
https://github.com/carhartl/jquery-cookie
È quindi possibile fare:
$.cookie("test", 1);
Cancellare:
$.removeCookie("test");
Inoltre, per impostare un timeout di un certo numero di giorni (10 qui) sul cookie:
$.cookie("test", 1, { expires : 10 });
Se l'opzione di scadenza è omessa, il cookie diventa un cookie di sessione e viene eliminato all'uscita dal browser.
Per coprire tutte le opzioni:
$.cookie("test", 1, {
expires : 10, // Expires in 10 days
path : '/', // The value of the path attribute of the cookie
// (Default: path of page that created the cookie).
domain : 'jquery.com', // The value of the domain attribute of the cookie
// (Default: domain of page that created the cookie).
secure : true // If set to true the secure attribute of the cookie
// will be set and the cookie transmission will
// require a secure protocol (defaults to false).
});
Per rileggere il valore del cookie:
var cookieValue = $.cookie("test");
Potresti voler specificare il parametro path se il cookie è stato creato su un percorso diverso da quello corrente:
var cookieValue = $.cookie("test", { path: '/foo' });
AGGIORNAMENTO (aprile 2015):
Come indicato nei commenti seguenti, il team che ha lavorato al plug-in originale ha rimosso la dipendenza jQuery in un nuovo progetto ( https://github.com/js-cookie/js-cookie ) che ha le stesse funzionalità e sintassi generale di la versione jQuery. Apparentemente il plugin originale non sta andando da nessuna parte però.
$.removeCookie('nameofcookie', { path: '/' });
Non è necessario utilizzare jQuery in particolare per manipolare i cookie.
Da QuirksMode (inclusi i caratteri di escape)
function createCookie(name, value, days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
} else {
expires = "";
}
document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = encodeURIComponent(name) + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ')
c = c.substring(1, c.length);
if (c.indexOf(nameEQ) === 0)
return decodeURIComponent(c.substring(nameEQ.length, c.length));
}
return null;
}
function eraseCookie(name) {
createCookie(name, "", -1);
}
Date un'occhiata al
<script type="text/javascript">
function setCookie(key, value, expiry) {
var expires = new Date();
expires.setTime(expires.getTime() + (expiry * 24 * 60 * 60 * 1000));
document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
}
function getCookie(key) {
var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
return keyValue ? keyValue[2] : null;
}
function eraseCookie(key) {
var keyValue = getCookie(key);
setCookie(key, keyValue, '-1');
}
</script>
Puoi impostare i cookie come piace
setCookie('test','1','1'); //(key,value,expiry in days)
Puoi ottenere i biscotti come piace
getCookie('test');
E infine puoi cancellare i cookie come questo
eraseCookie('test');
Spero che possa aiutare qualcuno :)
MODIFICARE:
Se si desidera impostare il cookie su tutto il percorso / pagina / directory, impostare l'attributo percorso sul cookie
function setCookie(key, value, expiry) {
var expires = new Date();
expires.setTime(expires.getTime() + (expiry * 24 * 60 * 60 * 1000));
document.cookie = key + '=' + value + ';path=/' + ';expires=' + expires.toUTCString();
}
Grazie vicky
é
, 北
ecc. Inoltre, non funzionerà per alcuni caratteri speciali che non sono ammessi nel nome del cookie o nel valore del cookie. Consiglio il seguente riferimento: tools.ietf.org/html/rfc6265
Puoi usare un plugin disponibile qui ..
https://plugins.jquery.com/cookie/
e poi per scrivere un cookie fare
$.cookie("test", 1);
per accedere al cookie impostato do
$.cookie("test");
Ecco il mio modulo globale che uso -
var Cookie = {
Create: function (name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
}
document.cookie = name + "=" + value + expires + "; path=/";
},
Read: function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(";");
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == " ") c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
},
Erase: function (name) {
Cookie.create(name, "", -1);
}
};
Assicurati di non fare qualcosa del genere:
var a = $.cookie("cart").split(",");
Quindi, se il cookie non esiste, il debugger restituirà un messaggio inutile come ".cookie not a function".
Dichiarare sempre prima, quindi eseguire la divisione dopo aver verificato la presenza di null. Come questo:
var a = $.cookie("cart");
if (a != null) {
var aa = a.split(",");
}
Manca solo un singolo o mancano diverse righe di codice?
Ecco come impostare i cookie con JavaScript:
il codice seguente è stato preso da https://www.w3schools.com/js/js_cookies.asp
function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; }
ora puoi ottenere i cookie con la seguente funzione:
function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i <ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; }
E finalmente è così che controlli il cookie:
function checkCookie() { var username = getCookie("username"); if (username != "") { alert("Welcome again " + username); } else { username = prompt("Please enter your name:", ""); if (username != "" && username != null) { setCookie("username", username, 365); } } }
Se si desidera eliminare il cookie, impostare il parametro expires su una data trascorsa:
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
Un semplice esempio di cookie impostato nel tuo browser:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>jquery.cookie Test Suite</title>
<script src="jquery-1.9.0.min.js"></script>
<script src="jquery.cookie.js"></script>
<script src="JSON-js-master/json.js"></script>
<script src="JSON-js-master/json_parse.js"></script>
<script>
$(function() {
if ($.cookie('cookieStore')) {
var data=JSON.parse($.cookie("cookieStore"));
$('#name').text(data[0]);
$('#address').text(data[1]);
}
$('#submit').on('click', function(){
var storeData = new Array();
storeData[0] = $('#inputName').val();
storeData[1] = $('#inputAddress').val();
$.cookie("cookieStore", JSON.stringify(storeData));
var data=JSON.parse($.cookie("cookieStore"));
$('#name').text(data[0]);
$('#address').text(data[1]);
});
});
</script>
</head>
<body>
<label for="inputName">Name</label>
<br />
<input type="text" id="inputName">
<br />
<br />
<label for="inputAddress">Address</label>
<br />
<input type="text" id="inputAddress">
<br />
<br />
<input type="submit" id="submit" value="Submit" />
<hr>
<p id="name"></p>
<br />
<p id="address"></p>
<br />
<hr>
</body>
</html>
Semplicemente copia / incolla e usa questo codice per impostare il tuo cookie.
jquery-1.9.0.min.js
verrà ricaricato per tutti quando il nome file viene aggiornato jquery-1.9.1.min.js
, altrimenti il browser NON farà alcuna richiesta al server per verificare il contenuto aggiornato. Se aggiorni il codice all'interno jquery.cookie.js
senza modificarne il nome file, potrebbe NON essere ricaricato nei browser che hanno già memorizzato nella cache la jquery.cookie.js
risorsa.
jquery.cookie.js
versione senza modificarne il nome file (a meno che il tuo server non gestisca la memorizzazione nella cache utilizzando gli E-tag).
È possibile utilizzare la libreria sul sito Web Mozilla qui
Sarai in grado di impostare e ottenere cookie in questo modo
docCookies.setItem(name, value);
docCookies.getItem(name);
Penso che Fresher ci abbia dato un buon modo, ma c'è un errore:
<script type="text/javascript">
function setCookie(key, value) {
var expires = new Date();
expires.setTime(expires.getTime() + (value * 24 * 60 * 60 * 1000));
document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
}
function getCookie(key) {
var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
return keyValue ? keyValue[2] : null;
}
</script>
È necessario aggiungere "valore" vicino a getTime (); altrimenti il cookie scadrà immediatamente :)
Ho pensato Vignesh Pichamani la risposta di fosse la più semplice e pulita. Aggiungendo alla sua la possibilità di impostare il numero di giorni prima della scadenza:
EDIT: aggiunta anche l'opzione 'non scade mai' se non è impostato alcun numero del giorno
function setCookie(key, value, days) {
var expires = new Date();
if (days) {
expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
} else {
document.cookie = key + '=' + value + ';expires=Fri, 30 Dec 9999 23:59:59 GMT;';
}
}
function getCookie(key) {
var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
return keyValue ? keyValue[2] : null;
}
Imposta il cookie:
setCookie('myData', 1, 30); // myData=1 for 30 days.
setCookie('myData', 1); // myData=1 'forever' (until the year 9999)
So che ci sono molte grandi risposte. Spesso, ho solo bisogno di leggere i cookie e non voglio creare sovraccarico caricando librerie aggiuntive o definendo funzioni.
Ecco come leggere i cookie in una riga di javascript . Ho trovato la risposta nell'articolo del blog di Guilherme Rodrigues :
('; '+document.cookie).split('; '+key+'=').pop().split(';').shift()
Questo legge il cookie chiamato key
, carino, pulito e semplice.
$.cookie("test", 1); //set cookie
$.cookie("test"); //get cookie
$.cookie('test', null); //delete cookie