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 :

[AJAX] "Trier" les elements de la réponse


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut [AJAX] "Trier" les elements de la réponse
    Salut tout le monde
    Je débute en ajax et voici mon problème:

    J'ai un formulaire et j'aimerais que les input se colorent soit en rouge soit en vert en fonction de ce qu'on y entre.
    Par exemple si le pseudo entré est valide, alors le champ se colore en vert; et vice versa.
    Seulement, j'ignore comment traiter la réponse envoyée par ma page php:
    j'utilise responseText, ajax me retourne donc une chaine. Dans cette chaine figure le message qui s'affiche (exemple "pseudo trop court").
    Mais j'aimerais y faire aussi figurer l'état de la réponse, si c'est une réponse positive, ou négative...

    Voilà j'espère m'être fait comprendre.
    Merci d'avance a++

  2. #2
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    et si tu retournais simplement "true" ou "false" ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Oui je pourrais tout aussi bien, mais le problème c'est comment je transmets le message maintenant ?
    En effet la réponse doit retourner 2 infos:

    -d'une part le message (exemple: pseudo trop court)
    -d'autre part, l'état (où on pourrait mettre true et false)

    Mon problème c'est que je ne sais pas comment "séparer" ma réponse en 2 "sous-réponses".

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    263
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 263
    Par défaut
    Ok
    Imaginons le fichier php traitant les informations comme suite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $resultat1="Vous devez....";
    $resultat2="true...";
     
    $sortie=$resultat1;
    $sortie.="*"; // un caractère ou separateur
    $sortie.=$resultat2
     
    echo utf8_encode($sortie.);
    ?>
    ce fichier renvois :"Vous devez ...* true";

    traitant la sortie
    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
     
     
    xhr.onreadystatechange = function()
        {
         if(xhr.readyState == 4 && xhr.status == 200)
         {
         var ch=xhr.responseText; // recuparation du resultat
    alert(ch);
         var P=ch.indexOf('*'); // position du caratcère "*" dans la chaine
                if(P!=-1) // si l'element est bien dans la chaine p est dif de -1
               {
         var message1=ch.substring(0,p); // extraction avant "*"
         var message1=ch.substring(P+1,ch.length);// extraction de qui vient après "*"
              }	 
       }
        }
    volia comment tu peux proceder.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    D'accord, merci pour ta solution, je teste ça tout de suite.
    Au passage, n'existe t-il pas un autre moyen de transmettre 2 infos en une seule fonction ?
    Car je propose de séparer une réponse en 2 mais j'ignore s'il existe une solution plus adaptée (même si elle n'a peut être rien à voir avec celle ci...)

  6. #6
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    a ce moment là, le mieux c'est de passer ta réponse en XML

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Yes ça marche merci pour votre aide

    Voici ma solution pour ceux que ça intéresserait:

    Le PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $buffer = "<?xml version=\"1.0\" ?>";
    	$buffer .= "<reponse><message>Bonjour 0</message>";
    	$buffer .= "<message>Bonjour 1</message>";
    	$buffer .= "<message>Bonjour 2</message>";
    	$buffer .= "<message>Bonjour 3</message>";
    	$buffer .= "<message>Bonjour 4</message></reponse>";
     
    	header("Content-Type: text/xml"); 
    	echo $buffer;
    Le html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reponse.getElementsByTagName("message")[3].firstChild.nodeValue //pour la reponse numero 3 par exemple...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Euh j'ai encore un petit problème:
    Avec le getElementsByTagName(), ça fonctionne.
    Maintenant, si je veux mettre un getElementById(), firefox me dit

    Erreur : reponse.getElementById is not a function
    voici mon code:

    Le html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    reponse = clean(xhr.responseXML.documentElement);
    alert(reponse.getElementById("message").firstChild.nodeValue);
    *

    Le php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $buffer = "<?xml version=\"1.0\" ?>";
    	$buffer .= "<div id='message'>Bonjour</div>";
    	$buffer .= "<div id='message2'>Bonjour2 !!!</div>";
     
    	header("Content-Type: text/xml"); 
    	echo $buffer;

  9. #9
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    getElementById ça s'utilise sur les element HTML comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("paf").innerHTML = "pouf";

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    En tous cas, si ça fonction en XML, faut pas oublier de lettres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(response.getElementById("message").firstChild.nodeValue);

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Pour le "reponse" c'est normal, c'est juste un nom de variable j'aurais aussi bien pu mettre "lala".
    jmulans, si je veux récupérer ce qu'il y a dans une balise, je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var mavariable = document.getElementById("paf").innerHTML;
    alert(mavariable);
    ??

  12. #12
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    dans une balise XML ? bah non tu utilise getElementsByTagName

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Et il n'y a pas d'autre moyen, pour récupérer des éléments en XML, que d'utiliser getElementsByTagName ?

  14. #14
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    pourquoi tu voudrais un autre moyen ? il est tres bien celui là

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Bein le problème avec getElementByTagName, c'est que tu dois tout le temps pécifier lequel tu veux entre crochets... et c'est source d'erreur... si tu te trompes d'un numéro, ton code plante...

  16. #16
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    bah oui, c'est ballot
    pourquoi tu te tromperais de numero ?

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Nan je sais pas c'est juste que c'est plus source d'erreur que GetElementById, mais apparemment, c'est pas possible... donc je vais me contenter de TagName.
    Merci a++

  18. #18
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    et puis de toute façon, en XML tu peut avoir plusieurs balises du meme nom
    donc getElementById c'est impossible

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

Discussions similaires

  1. trier les elements d'un DBLookupCombobox
    Par wesloff dans le forum Composants VCL
    Réponses: 2
    Dernier message: 08/04/2010, 17h24
  2. trier les elements HashMap
    Par hamma2 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 29/04/2007, 20h42
  3. Trier les réponses d'une recherche multi-critères
    Par bétécé dans le forum Access
    Réponses: 6
    Dernier message: 25/01/2007, 09h56
  4. trier les données dans le cache ??
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 31
    Dernier message: 10/06/2003, 10h03
  5. [VB6] [FileListBox] Récupérer les éléments sélectionnés
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/10/2002, 09h11

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