Probleme de XMLHttpRequest et php

Signaler
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012
-
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010
-
bonjour,
cette fois j'espere que vous  me repondre sérieusement et ne prend pas mal mais faute d'horthographe comme l'autre fois

bon le probleme que j'ai apropos de XMLHttpRequest, j'ai essaié de voir des tuto et jai lu le tuto de @nicomilville qui m'as aidé un peu avec leur message pour l'adapter mais le probleme reste le meme

//index.htm


<script language="javascript" type="text/javascript">
function getXhr(){
            var xhr = null;
    if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest();
    else if(window.ActiveXObject){ // Internet Explorer
       try {
                   xhr = new ActiveXObject("Msxml2.XMLHTTP");
               } catch (e) {
                   xhr = new ActiveXObject("Microsoft.XMLHTTP");
               }
    }
    else { // XMLHttpRequest non supporté par le navigateur
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
       xhr = false;
    }
              return xhr;
   }




 function go(){
    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     if(xhr.readyState 4 && xhr.status 200){
      //eval(xhr.responseText);
      results = xhr.eval(responseText.split(","));
      document.getElementById('id_u).value =results[0];
      document.getElementById('nom').value = results[2];
      document.getElementById('prenom').value = results[1];
      document.getElementById('adresse').value = results[5];
      document.getElementById('ville').value =results[3];
      document.getElementById('code_zip').value = results[4];
     }else{alert("erreur");}
    }
    // Ici on va voir comment faire du post
    xhr.open("POST","affsearchuser.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    document.getElementById('mode').style.display = "block";
   }  
</script>

</head>

<form method="post">

</form>

//affsearchuser.php
<?php
include('config.php');
$search_id = $_POST[''];
$sql = "SELECT * FROM tb_user WHERE id='".$search_id."'";
$res = mysql_query($sql);






while($rows=mysql_fetch_array($res)))
{
echo "".$rows['id'].", ".$rows['nom'].", ".$rows['prenom'].", ".$rows['adresse'].", ".$rows['ville'].", ".$rows['zip']."";


}


mysql_close();
?>

le resultat  m'affiche le message erreur, donc je pense que le script javascript ne traite pas le fichier php

merci de me repondre
a+

15 réponses

Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

désolé dans le fichier affsearchuser.php
remplacez cette ligne
 $search_id = $_POST[''];

par
 $search_id = $_POST['id_user'];
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
Salut,

ça t'affiche quoi comme message d'erreur ?

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

m'affiche le message d'alert de la function go()

alert("erreur");
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

et apres le message ereur m'affiche le div donc je pense que le fichier affsearchuser.php  ne le traite pas la fonction go()
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
évidement, tu as vérifier l'état avant d'envoyer la requête avec xhr.open...

Et tu as oublier xhr.send('');...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

j'ai ajouter xhr.send(''); apres xhr.open
 m'affiche le
mais les champs restent vide
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
pour le reste je ne sais pas trop...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

merci dans tout les cas @nicomilville

n' y a pas d'autre qui peux m'aider, urgent svp
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

ce n'est pas parce que la requête (xhmhttp) n'a pas terminé qu'elle est en erreur...on ne gère pas les erreurs avec xmlhttp comme tu le fais là. Vire ton alert() déjà. Où met le avec un test sur le bon retour d'erreur xmlhttp (cf tes tutos).
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

hi,
oui j'ai changé un peu le script mais n'a rien changé comme resultat deja me reste comme elle est.donc ce que je suis besoin reellement que un membre me corrige le script parce que me reste pas de temps pour le PFE, svp n'hesitez pas c'est tres urgent
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

Salut,

------> results = xhr.eval(responseText.split(","));
change par:
   results = eval(xhr.responseText.split(","));
et vire le teste sur le message d'alerte. Tu es en mode asynchrone. Pourquoi tu n'utilises pas JSON pour traiter un tableau en AJAX.
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

salut,
merci de votre reponse, j'ai changé comme tu m'as dis mais m'affiche dans les champs texte undefined
merci,
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

Ca sert à rien de mettre la fn eval( ), mets comme ceci:
results = xhr.responseText.split(/,/); ici on utilise une expression régulière.
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

salut,
merci de votre interrer tu es le seul ici qui est interessé, merci encore une autre fois,
je te dis une chose apropos la question dans le fichier php, j'ai fais un teste que quand on appuie sur la button pour afficher ne gere pas donc pour cela m'affiche undefined mais si je fixe la recherhce pour la requete et par exemple je prend numero ID=173 m'affiche dasn la chmps texte donc je pense qu'il  ne traite pas le fichier php

Merci et j'espere que tu m'aide jusqu'a je trouverai la solution parce que je pense pas que je le trouverai tout seul
Merci
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

L'erreur vient de traitement AJAX non pas par PHP, j'ai mis en rouge les instructions à réctifier:
//index.htm
<script language="javascript" type="text/javascript">
function getXhr(){
            var xhr = null;
    if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest();
    else if(window.ActiveXObject){ // Internet Explorer
       try {
                   xhr = new ActiveXObject("Msxml2.XMLHTTP");
               } catch (e) {
                   xhr = new ActiveXObject("Microsoft.XMLHTTP");
               }
    }
    else { // XMLHttpRequest non supporté par le navigateur
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
       xhr = false;
    }
              return xhr;
   }



 function go()
{
    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        if(xhr.readyState 4 && xhr.status 200)
      {
       results = xhr.responseText.split(/,/);
      document.getElementById('id_u).value =results[0];
      document.getElementById('nom').value = results[2];
      document.getElementById('prenom').value = results[1];
      document.getElementById('adresse').value = results[5];
      document.getElementById('ville').value =results[3];
      document.getElementById('code_zip').value = results[4];
     }    
   }
       // Ici on va voir comment faire du post
       xhr.open("POST","affsearchuser.php",true);
       // ne pas oublier ça pour le post
       xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');      
       xhr.send('id_user=' + document.getElementById('id_user').value);
      document.getElementById('mode').style.display = "block";
   }  
</script>

</head>

<form method="post">

</form>

//affsearchuser.php
<?php
include('config.php');
$search_id = $_POST['id_user'];
$sql = "SELECT id, nom, prenom, adresse, ville, zip FROM tb_user WHERE id='".$search_id."'";if(($res mysql_query($sql)) && ($rows mysql_fetch_assoc($res)))
   echo $rows['id'].", ".$rows['nom'].", ".$rows['prenom'].", ".$rows['adresse'].", ".$rows['ville'].", ".$rows['zip'];

else
   echo ' , , , , , '; // envoyé des resultats vides si la requete ne fonctionne pas



mysql_close();
?>