11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde,

Simple question, comment, par exemple je peux lire le poids de mon article dans ce petit tableau associatif ?


[{"[b]Article[/b]":{"Designation1":"GOUGERE BOITE DE 30","TVA":"1","[b]poids[/b]":"[b]0.22[/b]","code_produit":"A02","Texte2":null},"Tarif":{"Prix":"5.21"},"Famille":{"Libelle_fam":"Amuse bouches","CouleurTexte1":"7422738"},"Ssfamille":{"Libelle_ss_fam":"L'ap\u00e9ritif"},"Fournisseur":{"Nom_frns":"PATIGEL - DELIFRANCE  02 97 24 47 75"},"Offre":{"PrixNormal":null},"Unite":{"CodeUnite":"BTE","TypeUnite":"Unit\u00e9"}}]


Merci d'avance !
Modifié par Kikimagik (11 Sep 2014 - 14:19)
Es-tu certain du format de ton json?
Il me semble qu'il faut commencer par une accolade "{" ou non un crochet "[".
var json = '{"Article":{"Designation1":"GOUGERE BOITE DE 30","TVA":"1","poids":"0.22","code_produit":"A02","Texte2":null},"Tarif":{"Prix":"5.21"},"Famille":{"Libelle_fam":"Amuse bouches","CouleurTexte1":"7422738"},"Ssfamille":{"Libelle_ss_fam":"L\'apéritif"},"Fournisseur":{"Nom_frns":"PATIGEL - DELIFRANCE  02 97 24 47 75"},"Offre":{"PrixNormal":null},"Unite":{"CodeUnite":"BTE","TypeUnite":"Unité"}}';
var obj = JSON.parse(json);
document.write(obj.Article.poids);

Modifié par Alphonse (11 Sep 2014 - 13:57)
J'ai un tableau associatif en php que je passe a Javascript avec json_encode.
En faisant un alert de cette variable convertie, j'obtiens le tableau ci-dessus.
je vais essayer de virer les accolades et je te redis cela. Smiley cligne

EDIT : Merci beaucoup, c'est le bon truc. J'ai "bidouiller" (str.replace();) et du coup en retirant les crochet au début et la fin de la variable, cela fonctionne.

Maintenant, pourquoi json_encode m'a coller ces crochets, bizarre...
Modifié par Kikimagik (11 Sep 2014 - 14:18)
Bonjour.

Il est surtout anormal que ton PHP t'ajoutes ces crochets.

Est-ce que tu peux tester si en rajoutant l'option "JSON_FORCE_OBJECT", cela fonctionne mieux ou pas :
echo json_encode($array, JSON_FORCE_OBJECT);
Il y a quand même quelque chose qui me chagrine :

Ma méthode Javascript (Ajax) fait appelle a une méthode PHP dans l'un mes controllers.
Cette méthode, a la fin, renvoi :

return json_encode($mon_tableau, JSON_FORCE_OBJECT));


Dans ma méthode AJAX, fait avec JQuery, mon DataType est logiquement json, sauf qu'en json, ma réponse en cas de succès est :

null


la Doc JQuery dit la dessus : "json": Evaluates the response as JSON and returns a JavaScript object. The JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. As of jQuery 1.9, an empty response is also rejected; the server should return a response of null or {} instead.

Maintenant si je passe a text, j'obtiens le tableau plus haut dans les messages mais avec les crochets.

Si quelqu'un a une explication..

PS: Du coup JSON_FORCE_OBJECT en change rien, pour le moment.
Modifié par Kikimagik (11 Sep 2014 - 15:06)
Est-ce que tu peux donner le contenu du tableau php passé à json_encode ?

Soit ton tableau ne contient que des clés numériques, soit tu transmets en fait un tableau de tableau.

Après test rapide php 5.4, dès le moment où le tableau transmis contient une clé non numérique, alors c'est bien un objet javascript qui est retourné sans crochets.