ugrás a tartalomhoz

Egy sütiben több érték tárolása JavaScripttel

zoliky · 2008. Jún. 6. (P), 13.53
document.cookie = "accordion=container_1";
document.cookie = "accordion=container_2";
A masodik sor felulirja az elsot. Miert tortenik ez?
 
1

Re

stageline · 2008. Jún. 6. (P), 14.09
Utalom a javascriptet de komolyan egy valtozonak akarsz 2 fele erteket adni? Hozzáfűzni tudod max:

1. document.cookie = "accordion=container_1";
2. document.cookie += "accordion=container_2";
2

ok

zoliky · 2008. Jún. 6. (P), 14.12
Ha igy irom:
document.cookie = "accordion=container_1";
document.cookie = "accordion2=container_2";
Akkor ket suti jon letre. Nekem csak egy sutire van szuksegem amelyben tobb erteket tarolok. Peldaul szeretnek letrehozni egy "accordion" nevezetu sutit amelyben tarolom a kovetkezoket: accordion_1, accordion_2, accordion_3, stb...

A hozafuzes nem mukodik, csak az elso "container_1" kerul be az Accordion nevezetu sutibe.
3

Re

stageline · 2008. Jún. 6. (P), 14.19
Szerintem ahogy a php esetén javascriptnél sem tárolhatsz egy cookie-n belül több értéket, azonban egy tartományhoz csinálhasz sokféle cookie-t mint ahogy az fent is látszik. Ha modod van rá és érdekel meg van a tárhely csomagodhoz php akkor használhatsz sessiont, kapsz egy md5 ben kodolt session id-t es egy session tömböt amiben belül eltárolhatsz dolgokat, és azt a felhasználó nem látja és modositasni sem tudja
4

A session nem jo megoldas

zoliky · 2008. Jún. 6. (P), 14.24
A sutire szuksegem van kb. 1 evig.
Legordulo/felgordulo tablazat sorokrol van szo :) Ha egy felhasznalo becsuk ket tabla sort (TR) szertnem azt tarolni is, de nem akarok letrehozni 100 sutit egy dologert. Azt hiszem a legszebb megoldas ha egy sutiben tarolom mindegyik tablazat sor nevet (container_1, container_2).

Ime egy pelda (a gallery oldalan mukodik): http://img61.imageshack.us/img61/6162/zolinb9.jpg
5

nem zárja ki a session-t

Drawain · 2008. Jún. 6. (P), 14.54
Az, hogy egy évig szükséged van rá, nem zárja ki a session-t, csak jól kell beállítani.

Másrészt ha ilyen adatot akarsz tárolni cookie-ban, akkor tömbként vagy json formában tárold le, erre is rengeteg lib van a neten - vagy csak egyszerűen szerializált formában mentsed az adatot.

Egyébként nem találom ezt jó megoldásnak, mert a sütiben tárolható adat mennyisége véges, és ha itt 100 vagy több stringet akarsz egyetlenben eltárolni, ki tudja mi lesz a vége.
6

cookie

zoliky · 2008. Jún. 6. (P), 15.04
Ok de ezt a modszert hasznalja tobb forum is, peldaul : gallery drupal, vbulletin, stb... Nem tarolok tobb mint 10 erteket, azt hiszem a maximum 20.

A tomben birok tarolni sutiket JS library nelkul is?
7

nagyon alap, tessék továbbírni

toxin · 2008. Jún. 7. (Szo), 07.51
/* from json.org */
            (function(){
                var m = {
                    '\b': '\\b',
                    '\t': '\\t',
                    '\n': '\\n',
                    '\f': '\\f',
                    '\r': '\\r',
                    '"': '\\"',
                    '\\': '\\\\'
                }, s = {
                    array: function(x){
                        var a = ['['], b, f, i, l = x.length, v;
                        for (i = 0; i < l; i += 1) {
                            v = x[i];
                            f = s[typeof v];
                            if (f) {
                                v = f(v);
                                if (typeof v == 'string') {
                                    if (b) {
                                        a[a.length] = ',';
                                    }
                                    a[a.length] = v;
                                    b = true;
                                }
                            }
                        }
                        a[a.length] = ']';
                        return a.join('');
                    },
                    'boolean': function(x){
                        return String(x);
                    },
                    'null': function(x){
                        return "null";
                    },
                    number: function(x){
                        return isFinite(x) ? String(x) : 'null';
                    },
                    object: function(x){
                        if (x) {
                            if (x instanceof Array) {
                                return s.array(x);
                            }
                            var a = ['{'], b, f, i, v;
                            for (i in x) {
                                v = x[i];
                                f = s[typeof v];
                                if (f) {
                                    v = f(v);
                                    if (typeof v == 'string') {
                                        if (b) {
                                            a[a.length] = ',';
                                        }
                                        a.push(s.string(i), ':', v);
                                        b = true;
                                    }
                                }
                            }
                            a[a.length] = '}';
                            return a.join('');
                        }
                        return 'null';
                    },
                    string: function(x){
                        if (/["\\\x00-\x1f]/.test(x)) {
                            x = x.replace(/([\x00-\x1f\\"])/g, function(a, b){
                                var c = m[b];
                                if (c) {
                                    return c;
                                }
                                c = b.charCodeAt();
                                return '\\u00' +
                                Math.floor(c / 16).toString(16) +
                                (c % 16).toString(16);
                            });
                        }
                        return '"' + x + '"';
                    }
                };
                /* --------------------------------------------------------------- */
                
                JSON = {
                    encode: function(x){
                        if (x.constructor != Object) {
                            throw new Error('JSON encode waits an JSON object');
                        };
                        return s.object(x);
                    },
                    decode: function(json){
                        try {
                            return eval("(" + json + ")");
                        } 
                        catch (e) {
                            return undefined;
                        }
                    }
                };       
            
            Cookie = {
            
                set: function(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 = arguments[0] 
                        + "=" 
                        + ((value.constructor == Object) ? JSON.encode(value) : value) 
                        + expires 
                        + "; path=/"
                    ;
                },
                
                get: 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 JSON.decode(c.substring(nameEQ.length, c.length)) 
                                                || c.substring(nameEQ.length, c.length);						
                    };
                    return null;
                },
                
                destroy: function(name){
                    Cookie.set(name, "", -1);
                }            
            };
            })();
            
            //single cookie param, setting/getting
            Cookie.set("cookieSimple",3);
            alert(Cookie.get("cookieSimple"));	
            
            //multiple cookie params, setting/getting using JSON format
            Cookie.set("cookieJSON",{param0:true,param1:'1',param2:2,param3:[1,2,3,4]});
            myCookieParams = Cookie.get("cookieJSON");
            for (var cookieParam in myCookieParams) 
                alert(myCookieParams[cookieParam]);    		
            
            //Cookie.destroy("cookieSimple");
            //Cookie.destroy("cookieJSON");  
szerintem a kód önmagáért beszél, firecookie mint firebug-ba épülő külső cookie editor javasolt :)

üdv Csaba
8

Hogy csinálnád...

vbence · 2008. Jún. 7. (Szo), 09.45
...ha normál változók lennének? Ahhoz, hogy hozzafuzz valamit egy ertekhez azt le kell kérdezned.
alert(document.cookie);
9

firecookie

zoliky · 2008. Jún. 12. (Cs), 15.50
Koszonom a "firecookie" plugint, nagon hasznos!
Valaki meg tudna mondani, hogyan tudom elenorizni ha letezik egy suti ? Peldaul letrehoztam egy "accodion" nevezetu sutit, es szeretnem egy IF-el megnezni ha letezik.