IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Remplir objet avec retour objet json


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Points : 17
    Points
    17
    Par défaut Remplir objet avec retour objet json
    Salut à tous,
    C'est un peu tordu, donc j'explique:
    J'ai deux fonctions, quand je click sur un select, je selectionne la première (filldep), on vérifie que Alsace est sélectionné puis on appel loadJSON('Alsace.json'). On dit que c'est égal à list_choix1 et on appel fillvil. Mon pb est que list_choix1 a la valeur nul ou n'est pas un objet. La fonction n'a pas l'air de me renvoyer quelque chose. Pour appeler la seconde fonction il est impératif que list_choix1 soit égal à une valeur. La faute doit être énorme mais la je sèche. De l'aide ......
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    var list_choix1;
    function loadJSON(fname) 
    {
    	var xhr=createXHR();
    	xhr.open("GET", fname,true);
    	xhr.onreadystatechange=function() 
    	{
    		if (xhr.readyState == 4) 
    		{
    			if (xhr.status != 404) 
    			{
    				return eval("(" + xhr.responseText + ")");
    			} 
    			else 
    			{
     
     
    			}
    		}
    	}
    	xhr.send(null);
    }
    function fillvil(selregion){
    var region = selregion.value;
    seldept=document.getElementById('vil')
     
    while(seldept.options[0]){
    	seldept.removeChild(seldept.getElementsByTagName('option')[0]);
    	}
     
    for(i=0;i<list_choix1[region].length;i++){
       var optdept=document.createElement('option');
    	optdept.value=list_choix1[region][i];
     	optdept.innerHTML=list_choix1[region][i];
     	seldept.appendChild(optdept);
     	}
    }
     
    function filldep(selregion){
    var region = selregion.value;
    seldept=document.getElementById('dept')
     
    while(seldept.options[0]){
    	seldept.removeChild(seldept.getElementsByTagName('option')[0]);
    	}
     
    for(i=0;i<list_choix[region].length;i++){
       var optdept=document.createElement('option');
    	optdept.value=list_choix[region][i];
     	optdept.innerHTML=list_choix[region][i];
     	seldept.appendChild(optdept);
     	}
    if(region=="Alsace") {list_choix1=loadJSON('Alsace.json');}
    fillvil(document.getElementById('dept'));
    }
    A+ Stéphane

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    ton return eval("(" + xhr.responseText + ")"); est le return de la
    fonction anonyme associée à onreadystatechange et retourne
    ton Json à l'appelant (l'objet xhr), ce n'est pas le return de la
    fonction loadJSON.

    au lieu de faire un return eval..., fait un appel à la fonction
    qui doit mettre à jour ta liste en lui passant le json.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci marcha pour ta réponse,
    J'espère que tu as saisie mon problème.
    Mon pb est de dire :
    list_choix1= (le contenu de mon fichier) sans rien enlever, ni rajouter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    var list_choix1;
    function loadJSON(fname) 
    {
    	var xhr=createXHR();
    	xhr.open("GET", fname,true);
    	xhr.onreadystatechange=function() 
    	{
    		if (xhr.readyState == 4) 
    		{
    			if (xhr.status != 404) 
    			{
    				var data=eval("(" + xhr.responseText + ")");
     
    			} 
     
    		}
    	}
    	xhr.send(null);
     
    }
    J'ai essayé de mettre list_choix1= data dans la fonction mais il fait comme si
    list_choix1 fesait partie de la fonction et ne renvoie donc pas list_choix1=data. Je ne connais pas la longueur de mon fichier, donc je ne vois pas par quel bout le prendre même si je comprend bien ce que tu m'a dis.

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Je pense avoir trouvé quelque chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    function loadJSON(selection) 
    {
    	var xhr=createXHR();
    	if((selection.value)=="Alsace")    {xhr.open("GET","Alsace.json",true);}
    	if((selection.value)=="Aquitaine") {xhr.open("GET","Aquitaine.json",true);}
    	if((selection.value)=="Auvergne") {xhr.open("GET","Auvergne.json",true);}
    	xhr.onreadystatechange=function() 
    	{
    		if (xhr.readyState == 4) 
    		{
    			if (xhr.status != 404) 
    			{
    				fillvil(xhr.responseText);
     
    			} 
     
    		}
    	}
    xhr.send(null);
    }
    function fillvil(selregion){
    var region = selregion.value;
    seldept=document.getElementById('vil');
     
    while(seldept.options[0]){
    	seldept.removeChild(seldept.getElementsByTagName('option')[0]);
    	}
     
    for(i=0;i<list_choix1[region].length;i++){
       var optdept=document.createElement('option');
    	optdept.value=list_choix1[region][i];
     	optdept.innerHTML=list_choix1[region][i];
     	seldept.appendChild(optdept);
     	}
    }
     
    function filldep(selregion){
    var region = selregion.value;
    seldept=document.getElementById('dept');
     
    while(seldept.options[0]){
    	seldept.removeChild(seldept.getElementsByTagName('option')[0]);
    	}
     
    for(i=0;i<list_choix[region].length;i++){
       var optdept=document.createElement('option');
    	optdept.value=list_choix[region][i];
     	optdept.innerHTML=list_choix[region][i];
     	seldept.appendChild(optdept);
     	}
    loadJSON(document.getElementById('dept'));
    }
    Ce code marche, mais j'ai une question mon fichier fait 10 koctet quand il est sur le seveur, mais quand je le charge depuis le site, il fait plus de 70 koctet car tous mes if sont vrai , et qu'il charge toutes les listes dans mon fichier. Ce code sera t' il trop lourd lorsque j'aurais rempli tous mes fichier json.
    A+ Stéphane

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Erreur de ma part, le code ne marche pas, c'est pour cela que le fichier en ligne était si gros. Je cherche donc toujours, si quelqu'un aurait un idée...
    A+ Stéphane

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    J'ai trouvé un lien qui va me permetre de résoudre mon pb, merci pour votre aide.
    Le lien:http://www.ac-creteil.fr/util/progra...x/tp-ajax.html
    A+ Stéphane

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. objet literal et objet avec constructeur
    Par hellalaboy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/07/2011, 14h31
  2. [JMX] Appel d'une méthode distante avec retour d'objet complexe
    Par hugo123 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 24/07/2009, 12h18
  3. remplir dataset avec objet
    Par clemse31 dans le forum Débuter
    Réponses: 0
    Dernier message: 20/05/2009, 18h40
  4. Remplir REF CURSOR avec un objet "Is Table or Record"
    Par jeanjean1984 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 26/02/2009, 15h06
  5. Réponses: 2
    Dernier message: 10/12/2008, 02h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo