OVH Cloud OVH Cloud

essai JSON -> cookie

4 réponses
Avatar
unbewusst.sein
j'ai une array de nombres, strings et objet du genre :

o=[1,"1.1"...,2,{'two':{'nu':2,'en':'two,'fr':'deux','de':'zwei'}}];

quand je sérialise par :

o_JSONText=o.toJSONString();

je sauve ça dans un cookie, et pour retrouver o, je fais simplement un :

eval('('+cookie+')');

mais ça couine au niveau de l'objet dans l'array (missing ] after
element list.

et, déjà, ce qui m'est retourné est différent :

(1,1.1,...,2,[object Object],3,four)
----------------------^ <- COUINE LÀ


l'essai est là :

<http://www.yvon-thoraval.com/Cookies/cookie_object_json.xhtml>

pour l'instant je n'ai sérialisé que "Array", je fais les autres k dans
la foulée.


j'ai ma propre version d'un sérialiseur ultra simplifié, mais qui tourne
avec string, number, array(array, object) et object(object,array) :

<http://www.yvon-thoraval.com/Cookies/cookie_object.xhtml>

--
Une Bévue

4 réponses

Avatar
ASM
j'ai une array de nombres, strings et objet du genre :

o=[1,"1.1"...,2,{'two':{'nu':2,'en':'two,'fr':'deux','de':'zwei'}}];

quand je sérialise par :

o_JSONText=o.toJSONString();

je sauve ça dans un cookie, et pour retrouver o, je fais simplement un :

eval('('+cookie+')');

mais ça couine au niveau de l'objet dans l'array (missing ] after
element list.

et, déjà, ce qui m'est retourné est différent :


je sais pas ce qui t'es retourné mais ...
après avoir effacé les 5 ou 6 cookies que tu m'as déjà envoyés
puis appuyé sur le dernier bouton [ arrays ]
et demandé l'envoi du cooky
voici ce que contient ton cooky : cookie_object_json.xhtml

%7B%22form%22%3A%7B%22margin-left%22%3A%2260px%22%2C%22padding%22%3A%228px%200%208px%200%22%7D%2C%22input%22%3A%7B%22padding%22%3A%222px%202px%202px%202px%22%2C%22border-width%22%3A%2220px%20solid%20%23666%22%7D%2C%22select%22%3A%7B%22padding%22%3A%222px%202px%202px%202px%22%2C%22border-width%22%3A%222px%20solid%20%23666%22%7D%2C%22option%22%3A%7B%22odd%22%3A%7B%22color%22%3A%22%237f0075%22%2C%22background-color%22%3A%22%23efe%22%7D%2C%22even%22%3A%7B%22color%22%3A%22%237f0075%22%2C%22background-color%22%3A%22%23dfd%22%7D%2C%22add%22%3A%7B%22color%22%3A%22red%22%2C%22background-color%22%3A%22yellow%22%7D%2C%22odd_edited%22%3A%7B%22color%22%3A%22blue%22%2C%22background-color%22%3A%22%23fee%22%7D%2C%22even_edited%22%3A%7B%22color%22%3A%22blue%22%2C%22background-color%22%3A%22%23fdd%22%7D%7D%2C%22array%22%3A%5B%22un%22%2C%22deux%22%2C%22trois%22%2C%22quatre%22%5D%7D

recoller la les lignes si besoin

La demande de lecture du cooky foire (cf tt en bas).

Et voici tous les avertissements et erreurs retenues par FF
(du premier sorti donc le + vieux, au dernier)
y a du taf ! :

Avertissement : test for equality (==) mistyped as assignment (=)?
Fichier source : http://www.yvon-thoraval.com/index_js/toolkit.js
Ligne : 15, Colonne : 38
Code source :
while(res=result.iterateNext()){r.push(res);};

Avertissement : variable i hides argument
Fichier source : http://www.yvon-thoraval.com/index_js/toolkit.js
Ligne : 22, Colonne : 16
Code source :
for(var i=0;i<r.length;i++) rs[i]=r[i];

Avertissement : variable i hides argument
Fichier source : http://www.yvon-thoraval.com/index_js/toolkit.js
Ligne : 48, Colonne : 14
Code source :
for(var i=0;i<as.length;i++) r[i]=as[i];

là ... faut voir si y a pas une fonction for() qui en inclut une autre
for() et que les deux aient le même compteur 'i'

Avertissement : function jToolKit does not always return a value
Fichier source : http://www.yvon-thoraval.com/index_js/toolkit.js
Ligne : 58
Code source :
}

Avertissement : anonymous function does not always return a value
Fichier source : http://www.yvon-thoraval.com/index_js/toolkit.js
Ligne : 151, Colonne : 2
Code source :
},

Avertissement : anonymous function does not always return a value
Fichier source : http://www.yvon-thoraval.com/index_js/toolkit.js
Ligne : 175, Colonne : 2
Code source :
},

Avertissement : anonymous function does not always return a value
Fichier source : http://www.yvon-thoraval.com/index_js/toolkit.js
Ligne : 326, Colonne : 2
Code source :
}

Avertissement : function objectToString does not always return a value
Fichier source : http://www.yvon-thoraval.com/index_js/toolkit.js
Ligne : 946
Code source :
}

Avertissement : test for equality (==) mistyped as assignment (=)?
Fichier source :
http://www.yvon-thoraval.com/Cookies/cookie_object_json.xhtml
Ligne : 93, Colonne : 20
Code source :
if(o=cm.read()){

Erreur : too much recursion
Fichier source : http://www.yvon-thoraval.com/index_js/toolkit.js
Ligne : 907


C'est bon, je jongle donc entre deux réglages moniteur
- un tout crâmé (hyper clair) pour arriver à lire tes pages
- l'autre normal, pour lire-voir tout le reste




--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
unbewusst.sein
ASM wrote:

je sais pas ce qui t'es retourné mais ...
après avoir effacé les 5 ou 6 cookies que tu m'as déjà envoyés
puis appuyé sur le dernier bouton [ arrays ]
et demandé l'envoi du cooky
voici ce que contient ton cooky : cookie_object_json.xhtml



<snip />

C'est bon, je jongle donc entre deux réglages moniteur
- un tout crâmé (hyper clair) pour arriver à lire tes pages
- l'autre normal, pour lire-voir tout le reste


Super, merci beaucoup , mais comment as-tu tous ces messages d'erreurs ?


Persi, je n'ai droit qu'au dernier, dans la console FF2 :

too much recursion :[

je pensais que la syntaxe :

if(o=cm.read) était valide (je l'ai vu sur d'autres scripts ???

voudrais dire, selon moi, si, après avoir affecté cm.read() à o, o est
non null alors...

j'ai qg même changer en :

o=cm.read();
if(o) ...


bon je ne pige pas pourquoi il faudrait que toute fonction retoune une
valeur ???

pas grave.


bon pour le for(var i variable hides...

j'ai trouvé le pourquoi du comment, à l'entrée de ma fonction j'ai une
variable i en paramètre...

mais je ne m'en serts pas pour l'instant )))

bon je suis passer à j pour faire + zoli...

bon après toutes ces modifs je continue à avoir tout much recursion :[


j'ai cru que c'était peut-être un problème du au minifier mais j'ai
essayé avec les 2 json.js et json-min.js...

même résultat.

tu as déjà utilisé json ?
--
Une Bévue

Avatar
ASM
ASM wrote:

appuyé sur le dernier bouton [ arrays ]
et demandé l'envoi du cooky
voici ce que contient ton cooky : cookie_object_json.xhtml



Alorsse
- l'eval du contenu du cooky me donne : "syntax error"
- l'eval du unescape du cooky me donne : "invalide label"
{"form":{"margin-left":"60px","padding":"8px 0 8px 0"}, etc ...
^---- Colonne : 7

ne faudrait-il pas au minimum qu'on obtienne :
{"form"{"margin-left:60px","padding:8px 0 8px 0"}, etc ...


Super, merci beaucoup , mais comment as-tu tous ces messages d'erreurs ?


Très facile, dans la console tu choisis "tout".
Note que ce ne sont que des avertissements ... tout ce bazar semble
curieux à FF mais ne cause pas de réelle erreur.

Persi, je n'ai droit qu'au dernier, dans la console FF2 :

too much recursion :[

je pensais que la syntaxe :

if(o=cm.read) était valide (je l'ai vu sur d'autres scripts ???


oui, voir + bas.

voudrais dire, selon moi, si, après avoir affecté cm.read() à o, o est
non null alors...


Ne semblerait pas que ce soit ça que ça fait,
o est devenu cm.read()

j'ai qg même changer en :

o=cm.read();
if(o) ...


if(o=truc.muche) égale (presque) : est-ce que truc.muche existe ?

Petit test :

<html>
<p id="inf">info : </p>
<script type="text/javascript">
function aa() { document.getElementById('inf').innerHTML += 'vu'; }
if(oª) alert('aa existe');
alert(o); // quoi t'est-ce aa() ?
// ha ? o est maintenant ma fonction aa ?
o(); // mais ... on dirait bien que oui !
if(a») // ha! là ça va plus ! eerrrreuurr ! bb est non défini
</script>
</html>

bon je ne pige pas pourquoi il faudrait que toute fonction retoune une
valeur ???


revoir le petit test ci-dessus
(ça te retourne toute la fonction)

pas grave.


Ben si ! Piske :

bon après toutes ces modifs je continue à avoir tout much recursion :[


donc si tu veux que ça teste que cm.read a fonctionné
ce dernier doit le dire (false/true)
ou qu'à minima on ait :

if(o=cm.read())
1) o=cm.read() exécute la fonction cm.read()
2) o = 'undefined' si cm.read() ne renvoie rien.
3) aucune erreur
4) mais if(undefined) ne délanchera rien

j'ai cru que c'était peut-être un problème du au minifier mais j'ai
essayé avec les 2 json.js et json-min.js...


if(o=cm.read)
ce n'est tt de même pas json qui en est responsable !?

même résultat.

tu as déjà utilisé json ?


Non, mais ça tient en qques lignes, crois-je.
(et pas trop trop compliquées à comprendre crois-je(bis))

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé


Avatar
unbewusst.sein
ASM wrote:

Alorsse
- l'eval du contenu du cooky me donne : "syntax error"
- l'eval du unescape du cooky me donne : "invalide label"
{"form":{"margin-left":"60px","padding":"8px 0 8px 0"}, etc ...
^---- Colonne : 7

ne faudrait-il pas au minimum qu'on obtienne :
{"form"{"margin-left:60px","padding:8px 0 8px 0"}, etc ...



non non, c'est bien un objet js il faut bien les : entre "form" et {}

ce qu'il y a dans {} est la 'valeur' de form.



Super, merci beaucoup , mais comment as-tu tous ces messages d'erreurs ?


Très facile, dans la console tu choisis "tout".
Note que ce ne sont que des avertissements ... tout ce bazar semble
curieux à FF mais ne cause pas de réelle erreur.


ouias, tout à l'heure j'ai eu 24 erreurs simplement en essayant d'aller
sur un site (ruzee borders...) et FF2 n'y est pas allé, j'ai
l'impression que la dernière version du debogueur js, fiche un peu le
bazard...


Persi, je n'ai droit qu'au dernier, dans la console FF2 :

too much recursion :[

je pensais que la syntaxe :

if(o=cm.read) était valide (je l'ai vu sur d'autres scripts ???


oui, voir + bas.

voudrais dire, selon moi, si, après avoir affecté cm.read() à o, o est
non null alors...


Ne semblerait pas que ce soit ça que ça fait,
o est devenu cm.read()



o est devenu la VALEUR retournée par cm.read().


<snip />

pas grave.


Ben si ! Piske :

bon après toutes ces modifs je continue à avoir tout much recursion :[


donc si tu veux que ça teste que cm.read a fonctionné
ce dernier doit le dire (false/true)
ou qu'à minima on ait :

if(o=cm.read())
1) o=cm.read() exécute la fonction cm.read()
2) o = 'undefined' si cm.read() ne renvoie rien.
3) aucune erreur
4) mais if(undefined) ne délanchera rien


dans mon cas ça renvoie null que ça marche pas


j'ai cru que c'était peut-être un problème du au minifier mais j'ai
essayé avec les 2 json.js et json-min.js...


if(o=cm.read)
ce n'est tt de même pas json qui en est responsable !?


franchement, je ne sais pas, je me suis fait un petit sérialiseur sans
prétention qui tient en une quatantaine de lignes au max, il sérialise :
string, number, array, object, array of object object of array avec tous
les mélanges possibles, avec le même code d'utilisation...

ça roule

même résultat.

tu as déjà utilisé json ?


Non, mais ça tient en qques lignes, crois-je.
(et pas trop trop compliquées à comprendre crois-je(bis))


en json-min 1971 octets 24 lignes MAIS illisibles...
la version non compactée 8757 octets 290 lignes avec le baratin ...

tiens d'ailleurs en lisant le code, je m'aperçoit qu'en plus de ce que
fait mon sérialiseur json sérialise :

boolean et date.

bon à voir donc...
--
Une Bévue