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

AJAX Discussion :

[AJAX] Recupérer le resultat d'un "select" dans une fonction déja utilisant AjaX


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut [AJAX] Recupérer le resultat d'un "select" dans une fonction déja utilisant AjaX
    Bonjour,

    Pour traduire le titre, j'ai une fonction ajax qui reçoit un tableau composé de code de rubrique.

    dans la boucle pour traiter le tableau, pour chaque code(élément du tableau), je dois connaitre sa désignation c'est à dire faire un select dans une autre table.

    Et comme, je peux pas faire cette requête sql dans le code javascript, je suis bloqué. En effet, je suis pas sur qu'une faisant déjà un appel ajax peut encore au retour utiliser ajax.

    voilà mon code de fonction :

    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
    function go_libelle(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    traite_ajax_libelle(xhr); // Fonction traitant mon retour
    }
     
    // Ici on va voir comment faire du post
    .open("POST","charger_libelle.php",true);  
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    sel = document.getElementById('Num_compte');
    idauteur = sel.options[sel.selectedIndex].value;
    xhr.send("NumeroCompte="+idauteur);
    function traite_ajax_libelle(xhr)
    {
     
    if (xhr.readyState==4 && xhr.status == 200 ) 
    {
     montext=xhr.responseText;
     var js_table_lib=montext.split(",");
     var js_tableau_lib=JSON.parse(js_table_lib);
      for (i=0; i<js_tableau_lib.length; i++)
            {
      //-- Ecriture de la valeur 
    	document.formulaire.champ1.value = js_tableau_lib[i-1];
     
    /* Recupérer un libelle par un select qui doit utiliser  js_tableau_lib[i-1] dans la condition WHERE*/
     
    // Que faire ici pour avoir ce résultat de select ?
     
     
     
           }
    }
    }
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2011
    Messages : 34
    Par défaut
    Citation Envoyé par madina Voir le message
    Bonjour,

    En effet, je suis pas sur qu'une faisant déjà un appel ajax peut encore au retour utiliser ajax.

    voilà mon code de fonction :

    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
    function go_libelle(){
    ......					
    if (xhr.readyState==4 && xhr.status == 200 ) 
    {
     montext=xhr.responseText;
     var js_table_lib=montext.split(",");
     var js_tableau_lib=JSON.parse(js_table_lib);
      for (i=0; i<js_tableau_lib.length; i++)
            {
      //-- Ecriture de la valeur 
    	document.formulaire.champ1.value = js_tableau_lib[i-1];
    // Que faire ici pour avoir ce résultat de select ?      
     
           }
    }
    }
    }
    Salut. En regardant le code, je pense qu'il y a un problème dans l'accès de la donnée/tableau JSON soit js_tableau_lib[i-1] car cela renvoit [object Object].
    Il faut définir la donnée à extraire de la chaîne JSON comme js_tableau_lib[i-1].data

    Tester sur le cas complet ci-dessous

    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
     
    <html>
    <head>
    <script language="javascript" type="text/javascript" src="json2.js"></script>
    <script language="javascript" type="text/javascript">
    var montext = '[{"Age":15,"Nom":"Toto"},{"Age":9,"Nom":"Tito"}]'; // string JSON
    var js_table_lib=montext.split(","); // renvoit 2 array
    var js_tableau_lib=JSON.parse(js_table_lib); // parser les tableaux
    for (i=0; i<js_tableau_lib.length; i++)
    {
    alert ('i: '+i+' '+js_tableau_lib[i].Age); // ok avec .Age sinon [object Object]
    }
    </script>
    </head>
    <body>
    Extraire les données d'un tableau 
    </body>
    </html>
    Une fois la variable correctement extraite, vous êtes libre d'en faire ce que vous voulez comme la réutiliser dans une autre requête AJAX (autre fonction)
    Je ne sais pas si cela va vous aider...
    mctarek.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut
    Merci ,mctarek

    Ok je vois bien .

    mais ici selon mon cas, j'ai du mal à définir ce que c'est data pour moi.

    car le tableau utilisé js_tableau_lib, je le reçoit à partir d'une fonction php qui fait un select d'une colonne.

    donc data c'est quoi exactement par rapport à la table ?

    Merci

    Cordialement.

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2011
    Messages : 34
    Par défaut
    Citation Envoyé par madina Voir le message
    Merci ,mctarek

    Ok je vois bien .

    mais ici selon mon cas, j'ai du mal à définir ce que c'est data pour moi.

    car le tableau utilisé js_tableau_lib, je le reçoit à partir d'une fonction php qui fait un select d'une colonne.

    donc data c'est quoi exactement par rapport à la table ?

    Merci

    Cordialement.
    Salut. Dans mon exemple js_tableau_lib[i].Age => Age = data,
    js_tableau_lib[i] est vu comme [object object], il faut ensuite définir la variable à extraire de la chaîne json dans la boucle.
    Dans ce cas, si j'ai besoin de récupérer chacune de ces variables, je stockerai chaque variable dans un nom indexé comme nom+i = js_tableau_lib[i].nom; prenom+i = js_tableau_lib[i].prenom;
    Dans ton code, js_tableau_lib vient du résultat de la requête xhr.send("NumeroCompte="+idauteur); je suppose donc qu'il s'agit du retour d'un tableau de résultat (mysql ?) encodé en json et contenant des données clef/valeur...mctarek

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/07/2012, 17h03
  2. [AC-2000] recupérer le résultat d'un select dans une variable
    Par teen6517 dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/09/2010, 15h54
  3. affecter le resultat d'un select dans une variable
    Par ricoree78 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/06/2009, 14h48
  4. Réponses: 1
    Dernier message: 10/05/2009, 02h07
  5. utiliser le resultat d´un select dans une fonction
    Par charlie_p07 dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 12/03/2008, 20h54

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