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] Transmettre et récupérer des données entre un fichier javascript et php.


Sujet :

AJAX

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut [AJAX] Transmettre et récupérer des données entre un fichier javascript et php.
    Bonjour

    Mon fichier php fonctionne, je les testé sans javascript, donc mon problème est de faire le lien entre javascript et php.

    ici on transmet les données du formulaire

    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
     
     
                  objetXHR2 = creationXHR();
     
                  var temps = new Date().getTime();
     
                 var parametres = "nom="+ codeContenu("nom") + "mdp="+ codeContenu("mdp") + "&anticache="+temps;
     
     
     
     
     	objetXHR2.open("GET","./ConnexAdmis.php?"+parametres, true); 
     	objetXHR2.onreadystatechange = afficherReponse;
     
    	document.getElementById("btcon").disabled= true;
     
     
    		objetXHR2.send(null);


    Ici on récupere la valeur de l'echo.

    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
     
    function afficherReponse() {
     
    	if (objetXHR2.readyState == 4){
     
     
    	  if (objetXHR2.status == 200) {
    	   var nouveauResultat = objetXHR2.responseText;
     
     
     
     
    	if(nouveauResultat!=0) {
     
    	  window.location="supadm.html";
     
     
     
    	}else{
     
     
     
    	document.getElementById('info').style.visibility="visible";
     
    	remplacerContenu('info', "Pas droits");
    	document.getElementById('info').style.color="red";
     
    	document.getElementById("btcon").disabled= true;
     
    							}
     
     
    	}else{
     
    	  var erreurServeur="Erreur serveur : "+objetXHR2.status+" – "+ objetXHR2.statusText;
    	    remplacerContenu("info", erreurServeur);
    	  document.getElementById('info').style.visibility="visible";
     
    	   document.getElementById("btcon").disabled= false;
     
    	   objetXHR2.abort();
    	   objetXHR2=null;
    	   }
     
     
    }
    Fichier fonction ajax

    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 creationXHR() {
       var resultat=null;
       try {
    	    resultat= new XMLHttpRequest();
         } 
         catch (Error) {
         try {
         resultat= new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch (Error) {
             try {
             resultat= new ActiveXObject("Microsoft.XMLHTTP");
             }
             catch (Error) {
                resultat= null;
             }
         }
      }
    return resultat;
    }
     
    function remplacerContenu(id, texte) {
      var element = document.getElementById(id);
      if (element != null) {
        supprimerContenu(element);
        var nouveauContenu = document.createTextNode(texte);
        element.appendChild(nouveauContenu);
      }
    }
    function codeContenu(id) { 
    	var valeur=document.getElementById(id).value;
    	return encodeURIComponent(valeur);
    }
    function supprimerContenu(element) {
    if (element != null) {
        while(element.firstChild)
            element.removeChild(element.firstChild);
       }
    }
    Je pense que mon problème vient de là.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    		 objetXHR2 = creationXHR();
     		var temps = new Date().getTime();
     
    		var parametres = "nom="+ codeContenu("nom") + "mdp="+ codeContenu("mdp") + "&anticache="+temps;
     
    objetXHR2.open("GET","./ConnexAdmis.php?"+parametres, true); 
     		objetXHR2.onreadystatechange = afficherReponse;
    Là, je suis perdue.

    A +

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tes paramètres doivent être séparés par des &...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var parametres = "nom="+ codeContenu("nom") + "&mdp="+ codeContenu("mdp") + "&anticache="+temps;
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Rebonjour

    Merci, j'ai fais la modification, ca ne fonctionne toujour pas

    Ca retourne toujour 0.

    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
    On peut voir ton code php?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Le voici:

    Je les testé sans javascript, il fonctionne.

    Quand je rentre les bons user et mdp, il retourne 1.


    Quand c'est au hasard il retourn 0.

    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
     
    <?php
     
    header("Content-Type: text/plain ; charset=utf-8");
    header("Cache-Control: no-cache , private");
    header("Pragma: no-cache");
     
     
    if(isset($_REQUEST['nom'])) $nom=$_REQUEST['nom'];
     
     
     
    else $nom="inconnu";
     
     
    if(isset($_REQUEST['mdp'])) $mdps=$_REQUEST['mdp'];
     
    else $mdps="inconnu";
     
    require_once('connexionMysql.php');
     
    mysql_select_db($base);
     
     
    $requeteSQL="SELECT ke FROM log WHERE identifiant= '".$nom."' AND passw='".$mdps."'";
     
    $reponseSQL = mysql_query($requeteSQL);
     
    $enregistrement=mysql_fetch_array($reponseSQL);
     
     
     if(mysql_num_rows($reponseSQL)>0){
     
    $_SESSION['nom'] = $nom;
     
     $resultat=$enregistrement["ke"];
     
    }
     else{
     
     
     $resultat=0;
    }
     echo $resultat;
     
     
    ?>

  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
    C'est normale,
    if(mysql_num_rows($reponseSQL)>0){
    $_SESSION['nom'] = $nom;
    $resultat=$enregistrement["ke"];
    }
    else{
    $resultat=0;
    }
    echo $resultat;
    Tu as testé si les valeurs du nom et passw se correspondent avec l'nregistrement et retourne la valeur de "ke" sinon tu retourne 0

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir tout le monde

    ke à pour valeur 1, donc si l'utilisateur entre le bon nom et mdp, resultat = 1 sinon resultat = 0.

    Pourriez vous me dire où il y a une erreur dans mon algo?

    A +

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut,
    Et codeContenu(), c'est quoi ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    codeContenu est une fonction qui permet de retourner, le contenu d'une zone de text, codé automatiquement en UTF-8.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function codeContenu(id) { 
    	var valeur=document.getElementById(id).value;
    	return encodeURIComponent(valeur);
    }

  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
    Est-ce que objetXHR2 est une variable globale ou locale du fonction qui fait le requête AJAX car si il est locale de la fonction pour l'échange du donnée, tu n'auras pas accès dans la fonction afficherReponse(), sinon à mettre en paramètre.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                          objetXHR2 = creationXHR();
     
     		var temps = new Date().getTime();
     
    		var parametres = "nom="+ codeContenu("nom") + "&mdp="+ codeContenu("mdp") + "&anticache="+temps;
     
     
                             objetXHR2.open("GET","./ConnexAdmis.php?"+parametres, true); 
     		objetXHR2.onreadystatechange = afficherReponse;

    Normalement, il n'est pas nécessaire de mettre objetXHR2 en global vue que onreadystatechange appel la fonction afficherReponse.



    A+

  12. #12
    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
    Dans ce cas tu n'as pas accès à objetXHR2 dans la fonction afficherReponse() qui est une variable propre à la fonction qui contient le code
    objetXHR2 = creationXHR();
    var temps = new Date().getTime();
    var parametres = "nom="+ codeContenu("nom") + "&mdp="+ codeContenu("mdp") + "&anticache="+temps;
    objetXHR2.open("GET","./ConnexAdmis.php?"+parametres, true);
    objetXHR2.onreadystatechange = afficherReponse;
    ce qui ne permet pas son appel dans la fonction afficherReponse()
    On peut voir la fonction complète qui contient
    objetXHR2 = creationXHR();
    var temps = new Date().getTime();

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir tout le monde

    Voici la fonction complête.

    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
     
    function choixAcces(event){
     
     
    	if(document.getElementById('choiuser').options[document.getElementById('choiuser').selectedIndex].value == "Administrateur"){
     
    		 objetXHR2 = creationXHR();
     		var temps = new Date().getTime();
     
    		var parametres = "nom="+ codeContenu("nom") + "&mdp="+ codeContenu("mdp") + "&anticache="+temps;
     
     
    alert(parametres);
     
     		objetXHR2.open("GET","./ConnexAdmis.php?"+parametres, true); 
     		objetXHR2.onreadystatechange = afficherReponse;
     
    		document.getElementById("btcon").disabled= true;
     
     
    		objetXHR2.send(null);
     
     
     
     
            }
     
     	if(document.getElementById('choiuser').options[document.getElementById('choiuser').selectedIndex].value  == "utilisateur"){
     
     
     
      }
     
     
     
     }
    Je ne vois pas ce qui cause problème.

    A +

  14. #14
    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
    Le problème était dit dans la Post précédente.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    objetXHR2 = creationXHR();
    function choixAcces(event){
    	if(document.getElementById('choiuser').options[document.getElementById('choiuser').selectedIndex].value == "Administrateur"){
     		var temps = new Date().getTime();
    		var parametres = "nom="+ codeContenu("nom") + "&mdp="+ codeContenu("mdp") + "&anticache="+temps;
    alert(parametres);
     		objetXHR2.open("GET","./ConnexAdmis.php?"+parametres, true); 
     		objetXHR2.onreadystatechange = afficherReponse;
    		document.getElementById("btcon").disabled= true;
    		objetXHR2.send(null);
            }
     	if(document.getElementById('choiuser').options[document.getElementById('choiuser').selectedIndex].value  == "utilisateur"){
      }
     }
    Une Deuxième solution c'est de mettre en paramètre objetXHR2 dans la fonction afficherReponse et de l'instancier dans choixAcces

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour tout le monde

    Ca fonctionne!

    Merci pour votre aide.

    A +

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

Discussions similaires

  1. Récupérer des données entre deux pattern
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 17/04/2017, 14h17
  2. récupérer des données entre formulaires
    Par ballantine's dans le forum Langage
    Réponses: 7
    Dernier message: 27/10/2009, 09h24
  3. récupérer des données d'un fichier javascript
    Par argon dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2009, 10h10
  4. récupérer des données dans un fichier
    Par pymouse dans le forum Langage
    Réponses: 7
    Dernier message: 19/06/2006, 17h43
  5. Réponses: 2
    Dernier message: 16/01/2006, 19h34

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