Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2011, 15h20   #1
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Par défaut lecture dans un format json

Bonjour,

Mon script php me retourne des données au format json comme ci-dessous :

Code :
{ville_id:23253,ville_nom:ESTAIRES},{ville_id:23455,ville_nom:NEUF-BERQUIN},{ville_id:23221,ville_nom:DOULIEU}
Avec cela je dois remplir un select mais je n'arrive pas à accéder via javascript aux clés ville_id et ville_nom avec la fonction que j'ai :

Code :
1
2
3
4
5
6
7
8
function parseJSON(json) {
                var $selectVille = $('select[name="form_ville"]');
                $selectVille.empty();
 
                for(var key in json) {
                    $selectVille.append('<option value="'+json[key]+'">'+json.ville_nom+'</option>');
                }
            }
Merci pour votre aide
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 16h53   #2
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Bon voilà je récupère le json sous ce format :

Code :
{'ville_id':'23253','ville_nom':'ESTAIRES'},{'ville_id':'23455','ville_nom':'NEUF-BERQUIN'},{'ville_id':'23221','ville_nom':'DOULIEU'}
que j'envoie en paramètre dans la méthode

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
  function parseJSON(json) {
                var $selectVille = $('select[name="form_ville"]');
                $selectVille.empty();
                var infos_villes = eval('('+ json + ')');
 
                 for (var i=0 ; i < infos_villes.length ; i++)
				 {
					var infos_ville = infos_villes[i];
 
 
                    $selectVille.append('<option value="'+infos_ville.ville_id+'">'+infos_ville.ville_nom+'</option>');
                }
            }
et cela ne fonctionne pas....

mais en ajoutant cette ligne :

dans la fonction ci-dessous ça fonctionne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 function parseJSON(json) {
                var $selectVille = $('select[name="form_ville"]');
                $selectVille.empty();
                json=("["+json+ "]");
                var infos_villes = eval('('+ json + ')');
 
                 for (var i=0 ; i < infos_villes.length ; i++)
				 {
					var infos_ville = infos_villes[i];
 
 
                    $selectVille.append('<option value="'+infos_ville.ville_id+'">'+infos_ville.ville_nom+'</option>');
                }
            }
J'ai pas encore vraiment saisi pourquoi je dois ajouter ces crochets car je pensais que eval allait me transformer json en objet JavaScript mais je dois avoir un problème dans la syntaxe de json

Merci pour votre aide
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 19h26   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Code :
1
2
3
for(var key in json) {
    $selectVille.append('<option value="'+key+'">'+key.ville_nom+'</option>');
}
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 20h45   #4
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
non ça ne fonctionne pas...

Que des "undefined" dans le select
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 21h05   #5
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonsoir

Je préfère une solution jQuery à un problème du même nom

Mon fichier "JavaScript-1.json".
Attention, si le JSON n'est pas correct ('pas' mais "uniquement") jQuery ne fait rien et il ne signale aucune erreur !
Code json :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
    {
       "ville_id":23253,
       "ville_nom":"ESTAIRES"
    },
    {
       "ville_id":23455,
       "ville_nom":"NEUF-BERQUIN"
    },
    {
       "ville_id":23221,
       "ville_nom":"DOULIEU"
    }
]

Code javascript :
1
2
3
4
5
6
7
8
9
10
11
var objSelectVille = $("select[name='form_ville']").empty();
 
$.getJSON("JavaScript-1.json", function(json){
	var tab = [];
 
	$(json).each(function(i, item){
		tab.push('<option value="' + item.ville_id + '">' + item.ville_nom + '</option>');
	});
 
	$("select[name='form_ville']").html(tab.join(""));
});
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 21h14   #6
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
idem que des undefined...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
function parseJSON(json) {
      var $selectVille = $('select[name="form_ville"]');
      $selectVille.empt
      var tab = [];
 
     $(json).each(function(i, item){
    tab.push('<option value="' + item.ville_id + '">' + item.ville_nom + '</option>');
});
 
$("select[name='form_ville']").html(tab.join(""));
 
 
}
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 21h52   #7
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
mon fichier json vient d'un fichier php alors je ne peux pas utiliser la méthode $.getJSON()
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 22h36   #8
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonsoir

Dans le message n° 6, excusez-moi d'être brutal, mais votre code n'a pas de sens. Collez une partie de mon code dans votre fonction ne sert à rien, car la variable "json" n'a pas le même contenu.

Que la source du JSON soit un fichier JavaScript ou un fichier PHP n'a pas d'importance si le JSON qu'il retourne est bien formé. Voir : http://api.jquery.com/jQuery.getJSON/
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 22h43   #9
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Pas de souci j'ai répondu rapidement mais je n'ai pas fait de copier coller du code...J'ai adapté votre code et cela me retourne trois undefined comme avant.

mon fichier json est celui-ci :

Code :
[{'ville_id':'23253','ville_nom':'ESTAIRES'},{'ville_id':'23455','ville_nom':'NEUF-BERQUIN'},{'ville_id':'23221','ville_nom':'DOULIEU'}]
pas différent du votre

Cordialement
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 23h07   #10
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Citation:
Envoyé par viny Voir le message
J'ai adapté votre code
Avec $.getJSON() la variable json est un objet JavaScript, elle contient le résultat de $.parseJSON() qui est une fonction jQuery qui appelle le parseur JSON des navigateurs.

Avec votre fonction parseJSON() quel est le contenu de la variable json ?

Citation:
Envoyé par viny Voir le message
mon fichier json est celui-ci :

Code :
[{'ville_id':'23253','ville_nom':'ESTAIRES'},{'ville_id':'23455','ville_nom':'NEUF-BERQUIN'},{'ville_id':'23221','ville_nom':'DOULIEU'}]
pas différent du votre
Si ! Il y a des ' interdits. Il ne faut que des " .
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 23h17   #11
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
J'ai fait un alert(json);

et voici ce que j'obtiens :

Code :
{"ville_id":"23253","ville_nom":"ESTAIRES"},{"ville_id":"23455","ville_nom":"NEUF-BERQUIN"},{"ville_id":"23221","ville_nom":"DOULIEU"}
Merci pour votre aide...je débute en jquery et ajax
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 23h30   #12
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Voilà j'ai trouvé en cherchant beaucoup :

Code :
1
2
3
4
5
6
7
8
 
json=("["+json+ "]");
var $selectVille = $('select[name="form_ville"]');
 
$selectVille.empty();
$.each($.parseJSON(json), function(entryIndex, entry){
    var html='<option value="' + entry['ville_id']+ '">' + entry['ville_nom'] + '</option>';
   $selectVille.append(html);
merci
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 23h36   #13
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767


Si vous utilisez le code ci-dessous :

Code :
1
2
3
4
5
6
7
8
9
10
11
function parseJSON(json) {
    console.log("json = " + json);
 
    var tab = [];
 
    $(json).each(function(i, item){
	tab.push('<option value="' + item.ville_id + '">' + item.ville_nom + '</option>');
   });
 
   $("select[name='form_ville']").html(tab.join(""));
}

Avec le navigateur Firefox et le module Firebug, que donne le console.log() ?
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 23h43   #14
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Voir message ci-dessus
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 23h45   #15
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Citation:
Envoyé par viny Voir le message
Voilà j'ai trouvé en cherchant beaucoup :

Code :
1
2
3
4
5
6
7
8
 
json=("["+json+ "]");
var $selectVille = $('select[name="form_ville"]');
 
$selectVille.empty();
$.each($.parseJSON(json), function(entryIndex, entry){
    var html='<option value="' + entry['ville_id']+ '">' + entry['ville_nom'] + '</option>';
   $selectVille.append(html);
merci
En mettant de l'ordre, on devrait pouvoir arriver à ceci :

Code javascript :
1
2
3
4
5
6
7
8
9
function parseJSON(json) {
    var tab = [];
 
    $.each($.parseJSON("["+json+ "]"), function(i, item){
		tab.push('<option value="' + item.ville_id + '">' + item.ville_nom + '</option>');
	});
 
	$("select[name='form_ville']").html(tab.join(""));
}

Mais ce "["+json+ "]" m'étonne !
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 23h50   #16
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Oui mon fichier php ne me retourne pas le json entre crochet donc je dois l'ajouter...


Code :
1
2
3
4
5
6
7
8
$resultat_g_fonc_ajax_obtenir_liste_ville =  g_fonc_ajax_obtenir_liste_ville($bd, $_POST['form_cp']);
	while($info_ville = $bd->tableauSuivant($resultat_g_fonc_ajax_obtenir_liste_ville))
	{
		$ville[]='{"ville_id":"'.$info_ville[0].'","ville_nom":"'.$info_ville[1].'"}';
 
	} 
 
   echo json_encode($ville);
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h12.


 
 
 
 
Partenaires

Hébergement Web