Manipuler un objet JSON
Résolu/Fermé
ordiminnie
Messages postés
219
Date d'inscription
lundi 1 août 2005
Statut
Membre
Dernière intervention
5 juillet 2016
-
18 sept. 2009 à 18:05
ordiminnie - 30 sept. 2009 à 14:49
ordiminnie - 30 sept. 2009 à 14:49
A voir également:
- Manipuler un objet JSON
- Vente objet occasion entre particulier - Guide
- Identifier un objet à partir d'une photo - Guide
- Objet interdit en cabine ryanair - Guide
- Combien de temps restent les empreintes digitales sur un objet - Forum Vos droits sur internet
- La méthode range de l'objet _global a échoué ✓ - Forum VB / VBA
10 réponses
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
18 sept. 2009 à 18:40
18 sept. 2009 à 18:40
Salut :)
« missing ; before statement », littéralement « ; (point-virgule) manquant devant la déclaration », ça me paraît peu probable vu ton niveau mais sait-on jamais…
Et si c’était vraiment ça ^^ je t’encourage à trouver une façon de coder pour qu’oublier un point-virgule devienne impossible. Par exemple moi, quand j’ai une longue ligne à taper, je place mon point-virgule d’abord et je recule d’une case ;)
Et puis lis bien les messages d’erreur, ils sont en or !
« missing ; before statement », littéralement « ; (point-virgule) manquant devant la déclaration », ça me paraît peu probable vu ton niveau mais sait-on jamais…
Et si c’était vraiment ça ^^ je t’encourage à trouver une façon de coder pour qu’oublier un point-virgule devienne impossible. Par exemple moi, quand j’ai une longue ligne à taper, je place mon point-virgule d’abord et je recule d’une case ;)
Et puis lis bien les messages d’erreur, ils sont en or !
ordiminnie
Messages postés
219
Date d'inscription
lundi 1 août 2005
Statut
Membre
Dernière intervention
5 juillet 2016
17
21 sept. 2009 à 13:52
21 sept. 2009 à 13:52
merci pour ta réponse.
En effet, j'avais bien compris qu'il signale un manque de ; mais ce n'est pas le cas. Ou du moins je ne le vois pas...:o
Je pense que ce message d'erreur en cache un autre, un peu comme quand firebug te dit "alert is not a function" alors que si....(dans ce cas ça révèle souvent une erreur dans le code de la fonction qui la rend inexécutable).
je vais encore regarder plus en profondeur et tracker la virgule !
En effet, j'avais bien compris qu'il signale un manque de ; mais ce n'est pas le cas. Ou du moins je ne le vois pas...:o
Je pense que ce message d'erreur en cache un autre, un peu comme quand firebug te dit "alert is not a function" alors que si....(dans ce cas ça révèle souvent une erreur dans le code de la fonction qui la rend inexécutable).
je vais encore regarder plus en profondeur et tracker la virgule !
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
21 sept. 2009 à 14:00
21 sept. 2009 à 14:00
Juste avant ;)
C'est comme les guillemets, si tu oublies de fermer une chaîne il peut te signaler l'erreur des centaines de lignes plus loin, lorsqu'il rencontre un autre guillemet… La morale est la même : la véritable erreur se trouve avant la ligne signalée.
Enfin ça aurait pu être une erreur de recopiage mais c'est cohérent avec le message de firebug.
C'est comme les guillemets, si tu oublies de fermer une chaîne il peut te signaler l'erreur des centaines de lignes plus loin, lorsqu'il rencontre un autre guillemet… La morale est la même : la véritable erreur se trouve avant la ligne signalée.
Enfin ça aurait pu être une erreur de recopiage mais c'est cohérent avec le message de firebug.
ordiminnie
Messages postés
219
Date d'inscription
lundi 1 août 2005
Statut
Membre
Dernière intervention
5 juillet 2016
17
21 sept. 2009 à 17:13
21 sept. 2009 à 17:13
en effet il me manque un point virgule mais ça ne résout pas l'affaire. On m'a dit que les doubles doubles quotes pouvaient aussi poser problème. Je vais essayer ça mais je crois que le plus propre sera encore de faire mon select via le DOM.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
22 sept. 2009 à 10:30
22 sept. 2009 à 10:30
Ah diable, j’avais pas fait gaffe, y’a des paquets de guillemets partout ! Dans une chaîne, si tu veux placer un guillemet « html », il faut l’échapper en faisant \" . Mais le plus « propre » est quand même de le faire en DOM.
Ok, je te file un coup de main ? J’adore scripter du DOM ^^
L’élément select : http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-94282980
L’élément option : http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-70901257
limite, si j’ai bien compris comment tu as construit ton truc, tu peux baser le size de ton select sur la longueur du tableau rs.Records. Et je suppose d’ailleurs que c’est égal à rs.RecordCount. Du coup tu peux faire :
Ce qui, au final, donne ce code :
Il ne reste plus qu’à appeler appendChild(select) sur l’élément qui doit recevoir le select !
Edit : c’est du JavaScript pur, rien d’emprunté à aucune framework. Je ne connais pas jQuery, j’espère que tu n’auras pas trop de mal à adapter le code que je viens de te donner…
Ok, je te file un coup de main ? J’adore scripter du DOM ^^
L’élément select : http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-94282980
L’élément option : http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-70901257
var select = document.createElement("select"); select.size = 10; select.name = "SearchList"; select.id = "SearchList"; for (var count = 0; count < rs.RecordCount; count++) { var option = document.createElement("option"); option.value = rs.Records[count].ID; var text = document.createTextNode(rs.Records[count].Name); option.appendChild(text); select.appendChild(option); }
limite, si j’ai bien compris comment tu as construit ton truc, tu peux baser le size de ton select sur la longueur du tableau rs.Records. Et je suppose d’ailleurs que c’est égal à rs.RecordCount. Du coup tu peux faire :
select.size = rs.Records.length;et :
for (var count = 0; count < rs.Records.length; count++) { // … }
Ce qui, au final, donne ce code :
var select = document.createElement("select"); select.size = rs.Records.length; select.name = "SearchList"; select.id = "SearchList"; for (var count = 0; count < rs.Records.length; count++) { var option = document.createElement("option"); option.value = rs.Records[count].ID; var text = document.createTextNode(rs.Records[count].Name); option.appendChild(text); select.appendChild(option); }
Il ne reste plus qu’à appeler appendChild(select) sur l’élément qui doit recevoir le select !
Edit : c’est du JavaScript pur, rien d’emprunté à aucune framework. Je ne connais pas jQuery, j’espère que tu n’auras pas trop de mal à adapter le code que je viens de te donner…
ordiminnie
Messages postés
219
Date d'inscription
lundi 1 août 2005
Statut
Membre
Dernière intervention
5 juillet 2016
17
25 sept. 2009 à 12:18
25 sept. 2009 à 12:18
ordiminnie
Messages postés
219
Date d'inscription
lundi 1 août 2005
Statut
Membre
Dernière intervention
5 juillet 2016
17
25 sept. 2009 à 12:28
25 sept. 2009 à 12:28
... en plus de la très claire explication de groahr grâce à qui scripter le DOM semble facile (incroyable !).
Merci !
Merci !
ordiminnie
Messages postés
219
Date d'inscription
lundi 1 août 2005
Statut
Membre
Dernière intervention
5 juillet 2016
17
25 sept. 2009 à 13:50
25 sept. 2009 à 13:50
ça marche nikel ! J'ai quand même remplacé appendChild() par append() car ça faisait une erreur. Un select peut-il être un enfant d'un div ? Je pensais que oui mais apparemment pas, ou ça vient d'ailleurs.
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
25 sept. 2009 à 17:35
25 sept. 2009 à 17:35
Ah oui, le simple quote… Perso je ne m’en sers jamais, pour une raison personnelle (une histoire de rechercher / remplacer avec l’apostrophe typographique).
Je ne comprends pas pourquoi appendChild ne marche pas. C’est une méthode de l’interface Node, c’est-à-dire un des degrés les plus primaires du DOM !
(interface Node)
En plus j’ai testé mon code sous FF et sous IE8 avant de le poster.
Peut-être que jQuery détourne l’usage de cette méthode pour sa cuisine interne. Quoiqu’il en soit, la méthode append que tu utilises vient de cette framework, tu as donc tout intérêt à l’utiliser :)
Note que d’après ce que je trouve sur Google, tu peux ajouter tous tes éléments à str sous forme de chaîne (à condition de faire gaffe aux quotes :P), et append se débrouille tout seul avec ça.
Ça te fait un code plus léger, mais peut-être un peu moins rapide à l’interprétation (bicoze analyse de chaîne). À toi de voir ;)
Et pour finir : je viens de vérifier, on a le droit de mettre des select dans les div. Mais la logique du truc c’est qu’autour de tout ça, quelque part, il y ait un élément form, même si ce n’est pas dans la DTD (il y a des choses trop difficiles à formuler pour une DTD…) (DTD XHTML1.0 Strict)
;)
Edit :
citation :
[…] dans ma boite, on injecte notre html de cette façon (on travaille en asp) donc je n'avais jamais vu que ça. Travailler avec jquery me force à faire les choses bien […]
Sous-entendu : asp c’est mal ! XD
Je ne comprends pas pourquoi appendChild ne marche pas. C’est une méthode de l’interface Node, c’est-à-dire un des degrés les plus primaires du DOM !
(interface Node)
En plus j’ai testé mon code sous FF et sous IE8 avant de le poster.
Peut-être que jQuery détourne l’usage de cette méthode pour sa cuisine interne. Quoiqu’il en soit, la méthode append que tu utilises vient de cette framework, tu as donc tout intérêt à l’utiliser :)
Note que d’après ce que je trouve sur Google, tu peux ajouter tous tes éléments à str sous forme de chaîne (à condition de faire gaffe aux quotes :P), et append se débrouille tout seul avec ça.
Ça te fait un code plus léger, mais peut-être un peu moins rapide à l’interprétation (bicoze analyse de chaîne). À toi de voir ;)
Et pour finir : je viens de vérifier, on a le droit de mettre des select dans les div. Mais la logique du truc c’est qu’autour de tout ça, quelque part, il y ait un élément form, même si ce n’est pas dans la DTD (il y a des choses trop difficiles à formuler pour une DTD…) (DTD XHTML1.0 Strict)
;)
Edit :
citation :
[…] dans ma boite, on injecte notre html de cette façon (on travaille en asp) donc je n'avais jamais vu que ça. Travailler avec jquery me force à faire les choses bien […]
Sous-entendu : asp c’est mal ! XD
oops...c'est pas ce que je voulais dire
disons que j'ai codé un peu en c# (asp.net) et puis je suis arrivé ici où tout est en asp classic, avec des methodes pour cracher de l'html et un joyeux mélange html/js/asp/css.. (hum hum), du coup, je crois que mon esprit associera toujours asp avec "joyeux bordel" mais c'est totalement subjectif. ;-)
disons que j'ai codé un peu en c# (asp.net) et puis je suis arrivé ici où tout est en asp classic, avec des methodes pour cracher de l'html et un joyeux mélange html/js/asp/css.. (hum hum), du coup, je crois que mon esprit associera toujours asp avec "joyeux bordel" mais c'est totalement subjectif. ;-)