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] Traiter le résultat d'une requête en AJAX


Sujet :

AJAX

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut [AJAX] Traiter le résultat d'une requête en AJAX
    Re !

    C'est la journée AJAX, et comme je suis une bille dans le domaine, me revoilà !

    Ma problématique :

    Dans [ma_page.php], j'ai un form pour lequel l'évènement onsubmit doit déclencher une fonction du genre verif('ident','fichier_traitement') (où 'ident' est une chaîne, et 'fichier_traitement' un fichier php).

    Cette fonction doit :

    - lancer une requete AJAX via une autre page [verif_ident.php] (dans cette page, il s'agit d'une requête SELECT sur une table, qui vérifie si la valeur 'ident' y est bien présente), et qui soit renvoie 1 ligne ($resultat = 1), soit n'en renvoie pas ($resultat = 0).
    - transmet le '$resultat' comme réponse AJAX
    - traite ce '$resultat' : si $resultat = 1 alors on affiche le contenu du 'fichier_traitement' (soit dans une div dans [ma_page.php], soit avec window.open dans une nouvelle fenêtre, mais là n'est pas {encore} le problème !), et si $resultat = 0 alors on est redirigé vers une page [erreur.php]

    Ayant encore beaucoup, beaucoup de mal à rentrer dans la "logique AJAX", je n'ai absolument aucune idée de la façon dont je pourrais procéder...
    Au moins je suis sûr d'1 chose, c'est que c'est possible... C'est déjà ça non ???!!!

    Merci d'avance pour votre aide et vos retours d'expérience...
    @+

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,

    Fait comme ce que tu as faits dans cette discussion et teste la valeur du responseText que renvoie ton php pour faire le traitement javascript.

    A+.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut
    Désolé andry mais je n'arrive pas à comprendre la logique des méthodes (get post head etc.) ni des réponses.

    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
     
    	    xhr=getXhr();
    	    xhr.open("POST", verif_ident.php, true);
    	    xhr.onreadystatechange=function() 
                    {
    		    if(xhr.readyState == 4) {
    			if(xhr.status == 200) { 
    			    window.open(fichier_traitement,'Mon titre','Mes options');
    			}
    			else {
    			    document.location.href="erreur.php";
    			}
    		     }
    		 }
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Arguments
    	xhr.send("ident="+ident);
    Donc là, si j'ai bien compris, je demande l'exécution de mon fichier verif_ident.php qui contient une requête basée sur le critère 'ident'... Mais après ???
    Ce que je ne pige pas du tout, c'est comment la valeur de $resultat (0 ou 1) qui est créée dans verif_ident.php après la requête select, est retournée comme réponse ???

    Merci !

    Citation Envoyé par andry.aime Voir le message
    Re,

    Fait comme ce que tu as faits dans cette discussion et teste la valeur du responseText que renvoie ton php pour faire le traitement javascript.

    A+.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Je te conseille de lire ce tutoriel.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Je te conseille de lire ce tutoriel.
    Merci mais ça reste trop "académique" à mon goût, j'aurais plus besoin de pratique que de théorie

    Bon, j'ai avancé un peu... J'ai enfin compris (dites-moi qq même si je me trompe), que le résultat de ma requête était "écouté", c'est à dire avec un echo. Or, je n'avais pas mis d'echo dans le fichier verif_ident.php, seulement la définition de ma variable $resultat = 1 ou $resultat = 0. Comme quoi, quand je vous dis que je n'étais pas rentré dans la logique Ajax...! Va m'coucher moins bête ce soir..

    Me voilà donc avec une fonction qui a évolué, sauf qu'elle ne fonctionne tout simplement pas (le 'alert' me donne 'reponse =', comme si xhr.responseText était null)

    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
     
    function verifIdent(identif) {
    	var Identifiant = identif;
    	var xhr = getXhr();
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    			if (xhr.responseText == 1) {
    				alert('réponse = 1');
    			}
    			else {
    				alert('réponse = '+xhr.responseText);
    			}
    		}
    	}
    	xhr.open('POST','test_ident.php',true);
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	xhr.send('ident='+Identifiant);
     
    }
    J'ai testé xhr.status, ça me donne 0 donc OK.
    J'ai aussi testé ma requete en appelant directement mon fichier verif_ident.php?ident=blablabla, et ça me renvoie bien 1 en echo du $resultat.
    Et dans la console d'erreur de FF, je n'ai aucune erreur. C'est juste que ça marche pas...
    J'en ai marre

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (xhr.responseText == "1")

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut
    Non, c'est pas ça le pb : mon xhr.responseText ne contient de toute façon rien : quand je fais alert('réponse = '+xhr.responseText) ça me donne "réponse =" (vide ou null)

    Citation Envoyé par andry.aime Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (xhr.responseText == "1")

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Montre un peu la page php appelé.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Montre un peu la page php appelé.
    Voilà (verif_ident.php) :

    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
     
    <?php
    $ident = $_REQUEST['ident'];
     
    include $connexion;
     
    $requete = "SELECT identifiant FROM ma_table WHERE identifiant  = '".$ident."'";
    $resultat = mysql_query($requete,$conn)  or die ('Erreur Rqt Ident : '.mysql_error() );
    $total = mysql_num_rows($resultat);
    if ($total >= 1) {
            $resultat = 1;
    }
    else {
            $resultat = 0;
    }
     
    echo $resultat;
    ?>
    J'ai testé cette page "toute seule", ça fonctionne, pas d'erreur, et quand je renseigne un ident correct comme paramètre, ça m'affiche bien 1 en echo du résultat.

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Remplace $_REQUEST par $_POST.
    Fait un alert directement pour le responseText pour voir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    				alert(xhr.responseText);
    			}

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    comme le souligne @andry.aime,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xhr.open('POST','test_ident.php',true);
    tu as envoyé les données en méthode POST, à ce titre $_POST coté php te permet de récupérer ces données. Donc pour ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_POST['ident'] = 'valeur';//cf. récupération des données envoyées par un formulaire en methode POST

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut
    J'ai essayé avec $_POST et tout comme tu m'as dit, mais j'obtiens toujours "réponse=" (vide ou null)...
    C'est à désespérer..

    Citation Envoyé par andry.aime Voir le message
    Remplace $_REQUEST par $_POST.
    Fait un alert directement pour le responseText pour voir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    				alert(xhr.responseText);
    			}

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Par défaut
    J'ai trouvé !!!!!

    En fait c'est la méthode xhr.open qui apparemment ne supporte pas les noms de fichiers avec underscore : j'ai transformé text_ident.php en textident.php et là ça fonctionne !

    Un grand grand merci à mes gentils contrributeurs auxquels j'ai fait perdre bcp de temps depuis hier soir

    @+

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

Discussions similaires

  1. [AJAX] Traiter le résultat d'une requête SQL avec jQuery
    Par Aizen64 dans le forum jQuery
    Réponses: 2
    Dernier message: 09/11/2015, 08h27
  2. Réponses: 2
    Dernier message: 12/07/2011, 10h57
  3. Réponses: 3
    Dernier message: 22/10/2010, 07h15
  4. [AJAX] Afficher le résultat d'une requête après un onChange
    Par baggie dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 15/05/2008, 13h56
  5. [AJAX] Gérer plusieurs pages de résultats d'une requête
    Par dubitoph dans le forum Général JavaScript
    Réponses: 34
    Dernier message: 25/07/2007, 15h08

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