Est-il possible de créer un cookie à l'aide de tableaux? Je voudrais stocker a[0]='peter'
, a['1']='esther'
, a['2']='john'
dans un cookie en JavaScript.Créer un tableau dans un cookie avec javascript
Répondre
Les cookies ne peuvent contenir que des chaînes. Si vous voulez simuler un tableau, vous devez le sérialiser et le désérialiser.
Vous pouvez le faire avec une bibliothèque JSON.
J'ai juste besoin de stocker un tableau de chaînes. Est-ce possible avec une méthode plus simple? – limfreak
Ceci est une méthode simple. Il existe des méthodes plus simples, mais elles ne sont que légèrement plus simples et beaucoup moins robustes. – Quentin
Utilisez certainement JSON. Vous pouvez stocker "['foo', 'bar']" et l'évaluer plus tard, mais cela peut être un désastre en termes de performance et de stabilité. –
Créer un tableau dans un cookie à l'aide de jQUery?
var list = new cookieList("test"); $(img).one('click', function(i){ while($('.selected').length < 3) {
$(this).parent()
.addClass("selected")
.append(setup.config.overlay);
//$.cookie(setup.config.COOKIE_NAME, d, setup.config.OPTS);
var index = $(this).parent().index();
// suppose this array go into cookies.. but failed
list.add(index);
var count = 'You have selected : <span>' + $('.selected').length + '</span> deals';
if($('.total').length){
$('.total').html(count);
}
} });
Je suis d'accord avec les autres commentaires - vous ne devriez pas faire cela et vous devriez utiliser JSON. Cependant, pour répondre à votre question, vous pouvez le pirater en stockant le tableau sous la forme d'une chaîne délimitée par des virgules. Disons que vous vouliez économiser le suivant tableau JavaScript dans un cookie:
var a = ['peter','esther','john'];
Vous pouvez définir une chaîne de cookie, itérer puis sur le tableau:
// Create a timestamp in the future for the cookie so it is valid
var nowPreserve = new Date();
var oneYear = 365*24*60*60*1000; // one year in milliseconds
var thenPreserve = nowPreserve.getTime() + oneYear;
nowPreserve.setTime(thenPreserve);
var expireTime = nowPreserve.toUTCString();
// Define the cookie id and default string
var cookieId = 'arrayCookie';
var cookieStr = '';
// Loop over the array
for(var i=0;i<a.length;i++) {
cookieStr += a[i]+',';
}
// Remove the last comma from the final string
cookieStr = cookieStr.substr(0,cookieStr.length-1);
// Now add the cookie
document.cookie = cookieId+'='+cookieStr+';expires='+expireTime+';domain='+document.domain;
Dans cet exemple, vous obtiendrez la suivant cookie stocké (si votre domaine est www.example.com):
arrayCookie=peter,ester,john;expires=1365094617464;domain=www.example.com
Je sais que c'est vieux, mais vous auriez pu faire var a = ['peter', 'esther', 'john']. Join(); Et puis retirez la boucle et la sous-chaîne. – cazgp
oui ... @ cazgp ....mais bon à voir enlever "," dans le ci-dessus –
Comme vous pouvez le lire dans ce topic:
Vous combinez l'utilisation jQuery.cookie plugin et JSON et résolvez votre problème.
Lorsque vous souhaitez enregistrer un tableau, vous créez un tableau de JS et d'utiliser JSON.stringify
pour la transformer en une chaîne et stockée avec $.cookie('name', 'array_string')
var myAry = [1, 2, 3];
$.cookie('name', JSON.stringify(myAry));
Lorsque vous voulez retrive le tableau à l'intérieur du cookie, vous utilisez $.cookie('name')
pour récupérer la valeur de cookie et utilisez JSON.parse
pour récupérer le tableau de la chaîne.
var storedAry = JSON.parse($.cookie('name'));
//storedAry -> [1, 2, 3]
j'ajouter le code ci-dessous Script (voir le code suivant) dans un fichier javascript appelé CookieMonster.js
.
Il est un wrapper autour de l'extrait en cours de http://www.quirksmode.org/js/cookies.html
Il fonctionne avec les tableaux et les chaînes, il automagiquement échapper à votre tableau/les virgules de chaîne ,
et des points-virgules ;
(qui ne sont pas traités dans les extraits originaux).
J'ai énuméré l'utilisation simple et l'utilisation de bonus que j'ai intégrée dedans.
Utilisation:
//set cookie with array, expires in 30 days
var newarray = ['s1', 's2', 's3', 's4', 's5', 's6', 's7'];
cookiemonster.set('series', newarray, 30);
var seriesarray = cookiemonster.get('series'); //returns array with the above numbers
//set cookie with string, expires in 30 days
cookiemonster.set('sample', 'sample, string;.', 30);
var messagestring = cookiemonster.get('sample'); //returns string with 'sample, string;.'
Bonus:
//It also conveniently contains splice and append (works for string or array (single string add only)).
//append string
cookiemonster.append('sample', ' add this', 30); //sample cookie now reads 'sample, string;. add this'
//append array
cookiemonster.append('series', 's8', 30); //returns array with values ['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8']
//splice
cookiemonster.splice('series', 1, 2, 30); //returns array with values ['s1', 's4', 's5', 's6', 's7', 's8']
CookieMonster.js:
var cookiemonster = new Object();
cookiemonster.append = function (cookieName, item, expDays) {
item = cm_clean(item);
var cookievalue = cookiemonster.get(cookieName);
if (cookievalue instanceof Array) {
cookievalue[cookievalue.length] = item;
cm_createCookie(cookieName, cm_arrayAsString(cookievalue), expDays);
} else {
cm_createCookie(cookieName, cookievalue + item, expDays);
}
};
cookiemonster.splice = function (cookieName, index, numberToRemove, expDays) {
var cookievalue = cookiemonster.get(cookieName);
if (cookievalue instanceof Array) {
cookievalue.splice(index, numberToRemove);
cm_createCookie(cookieName, cm_arrayAsString(cookievalue), expDays);
}
};
cookiemonster.get = function (cookieName) {
var cstring = cm_readCookie(cookieName);
if (cstring.indexOf('<#&type=ArrayVals>') != -1) {
var carray = cstring.split(',');
for (var i = 0; i < carray.length; i++) {
carray[i] = cm_dirty(carray[i]);
}
if (carray[0] == '<#&type=ArrayVals>') {
carray.splice(0, 1);
}
return carray;
} else {
return cm_dirty(cstring);
}
};
cookiemonster.set = function (cookieName, value, expDays) {
if (value instanceof Array) {
cm_createCookie(cookieName, cm_arrayAsString(value), expDays);
}
else { cm_createCookie(cookieName, cm_clean(value), expDays); }
};
cookiemonster.eraseCookie = function (name) {
cm_createCookie(name, "", -1);
};
function cm_replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
};
function cm_clean(ret) {
ret = cm_replaceAll(ret.toString(), ',', ',');
ret = cm_replaceAll(ret.toString(), ';', ';');
return ret;
};
function cm_dirty(ret) {
ret = cm_replaceAll(ret, ',', ',');
ret = cm_replaceAll(ret, ';', ';');
return ret;
};
function cm_createCookie(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
} else var expires = "";
document.cookie = name + "=" + value + expires + "; path=/";
};
function cm_readCookie(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;
};
function cm_arrayAsString(array) {
var ret = "<#&type=ArrayVals>"; //escapes, tells that string is array
for (var i = 0; i < array.length; i++) {
ret = ret + "," + cm_clean(array[i]);
}
return ret;
};
Pour cet exemple, vous pouvez le faire assez facilement:
Make Cookies:
///W3Schools Cookie Code: function setCookie(cname,cvalue,exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires=" + d.toGMTString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";"; } function getCookie(cname) { var name = cname + "="; 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); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } ///My Own Code: for(a=0;a<b.length;a++){ setCookie(b[a],b[a],periodoftime); }
Récupérer tableau:
for(a=0;a<b.length;a++){ b[a] = getCookie(b[a]) }
Pour tout tableau avec d'autres types de valeur en plus des chaînes:
Make Cookies:
///Replace MyCode above With: if(typeof b[a] === 'string'){ setCookie(b[a],b[a],periodoftime); }else{ setCookie(b[a].toString,b[a],periodoftime); }
Récupérer tableau:
for(a=0;a<b.length;a++){ if(typeof b[a] === 'string'){ b[a] = getCookie(b[a]) }else{ b[a] = getCookie(b[a].toString) } }
Le seul défaut est que les valeurs identiques ne peuvent pas être récupérées.
Aucun JQuery requis, séparation des virgules ou JSON.
J'ai créé ce moyen facile d'obtenir des cookies. Il va donner erreur si l'exécution, mais il est fonctionnel
var arrayOfCookies = [];
function parseCookieToArray()
{
var cookies = document.cookie;
var arrayCookies = cookies.split(';');
arrayCookies.map(function(originalValue){
var name = originalValue.split('=')[0];
var value = originalValue.split('=')[1];
arrayOfCookies[name] = value;
});
}
console.log(arrayOfCookies); //in my case get out: [language: 'en_US', country: 'brazil']
parseCookieToArray();
New Mes nouveaux obj create
get
les cookies
cookie = {
set: function(name, value) {
document.cookie = name+"="+value;
},
get: function(name) {
cookies = document.cookie;
r = cookies.split(';').reduce(function(acc, item){
let c = item.split('='); //'nome=Marcelindo' transform in Array[0] = 'nome', Array[1] = 'Marcelindo'
c[0] = c[0].replace(' ', ''); //remove white space from key cookie
acc[c[0]] = c[1]; //acc == accumulator, he accomulates all data, on ends, return to r variable
return acc; //here do not return to r variable, here return to accumulator
},[]);
}
};
cookie.set('nome', 'Marcelindo');
cookie.get('nome');
Et excusez-moi pour mon débutant anglais .
- 1. Comment stocker un tableau dans un cookie JavaScript?
- 2. Comment créer dynamiquement un tableau avec Javascript?
- 3. créer un cookie dans CANJS
- 4. JavaScript: créer dynamiquement un tableau
- 5. Comment stocker un tableau d'objets dans un cookie avec jQuery $ .cookie()?
- 6. Créer un cookie non persistant avec FormsAuthenticationTicket
- 7. créer un cookie persisté avec forumsauthentication
- 8. créer un tableau javascript avec php dans le serveur
- 9. Lire un cookie Javascript avec PHP
- 10. Créer un cookie pour NSURLRequest?
- 11. créer un tableau associatif/hash en javascript
- 12. Créer un tableau en javascript d'objets personnalisés
- 13. mettre un hachage dans le cookie javascript
- 14. Créer dynamiquement un tableau en Javascript
- 15. Créer un tableau en utilisant Javascript
- 16. Comment créer un cookie d'authentification dans un MembershipProvider personnalisé?
- 17. Comment créer un JavaScript multidimentionnelle tableau
- 18. Créer un tableau avec des éléments d'arbre en Javascript
- 19. JavaScript - Créer un tableau avec des données sans bouclage
- 20. Synchronisez un tableau avec javascript
- 21. dans un tableau javascript
- 22. Stockez un tableau d'objets JS dans un cookie, sans plugins?
- 23. Comment créer/lire/supprimer un cookie dans un widget blackberry?
- 24. Comment créer un tableau dans un autre tableau?
- 25. validation javascript avec un tableau
- 26. Créer un fichier avec Javascript
- 27. créer un carrousel avec javascript?
- 28. créer un cookie et vérifier si le cookie existe
- 29. Comment créer un «vrai» tableau JavaScript dans Rhino
- 30. Enregistrer des valeurs d'un cookie dans un tableau en PHP?
Étant donné la nature des tableaux, un cookie (taille limitée) est le dernier endroit où je tenterais de stocker une/la dernière méthode de stockage que j'essaierais d'utiliser. – symcbean