Encore une fonction qui marche pas !

Résolu
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 7 juil. 2008 à 12:55
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 8 juil. 2008 à 10:29
Salut,

J'ai encore un problème avec une fonction qui ne marche pas !

ma fonction :

function aff_discution() {
 var xhr_object = null;
 
 if(window.XMLHttpRequest)
  xhr_object = new XMLHttpRequest();
 else if(window.ActiveXobject)
  xhr_object = new ActiveXobject("Microsoft.XMLHTTP");
 else{
  alert("Votre navigateur n'est pas compatible avec XMLHttpRequest");
  return;
 }
 
 xhr_object.open("POST", "recup_message.php", true);
 
 xhr_object.onreadystatechange = function () {
  if (xhr_object.readyState== 4) {
   if (xhr_object.status == 200) {
    document.getElementById('messages').innerHTML = xhr_object.responseText;
   }
  }
 }
 
 xhr_object.send('');
}

Ma fonction est censé afficher les message récupèrer par la page recup_message.php mais elle n'en fait rien !

Merci d'avance !

a++

Si la réponse vous convient, pensez : Réponse acceptée !

18 réponses

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
7 juil. 2008 à 17:34
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv= "Content-Type" content="text/html; charset=iso-8859-1" />
        <title>syst&egrave;me de chat pour souris</title>
    <script>
function recup_text() {
 var O_text = document.getElementById('text').value;
 var O_pseudo1 = document.getElementById('pseudo1').value;
 var O_pseudo2 = document.getElementById('pseudo2').value;
 var data = "message="+O_text+"&pseudo1="+O_pseudo1+"&pseudo2="+O_pseudo2;
 var xhr_object = null;
 
 if(window.XMLHttpRequest)
  xhr_object = new XMLHttpRequest();
 else if(window.ActiveXobject)
  xhr_object = new ActiveXobject("Microsoft.XMLHTTP");
 else{
  alert("Votre navigateur n'est pas compatible avec XMLHttpRequest");
  return;
 }
 
 xhr_object.onreadystatechange = function () {
  if (xhr_object.readyState== 4) {
    if (xhr_object.status == 200)
     document.getElementById('discussion').innerHTML =
       document.getElementById('discussion').innerHTML + xhr_object.responseText;
  }
 }
 
 xhr_object.open("POST",'recup_message.php', true);
 xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
 xhr_object.send(data);
}
    </script>
    </head>
   
      pseudo 1 :
      pseudo 2 :
      message : <textarea id ="text"></textarea>
   
   

      discussion : <textarea id="discussion"></textarea>
   
</html>

recup_message.php :

<?php
    $pseudo1 = $_POST['pseudo1'];
    $pseudo2 = $_POST['pseudo2'];
    $message = $_POST['message'];
    echo $message;
?>

Y'a pas besoin d'encoder tes données, elles ne sont plus envoyées dans l'url...
(de rien c'est 2040 euros sans les charges...)
Bonjour à ton patron.
3
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
7 juil. 2008 à 13:08
De quel coté cela ne fonctionne pas ? User ou Server ?
Y a t il un message d'erreur ?
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
7 juil. 2008 à 13:15
Pourquoi ? " if (xhr_object.status == 200) "

Extrait de : http://www.toutjavascript.com/savoir/xmlhttprequest.php3#section_03
"Il existe une autre propriété intéressante qui est status et qui représente le code HTTP retourné par la requête. Il est bon de savoir que Firefox déclenche une erreur si on tente d'accéder à cette propriété avant que readyState ne vaille 4. "
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 juil. 2008 à 13:20
Bonjour,

soit tu n'appelles pas la fonction,
soit tu as une erreur javascript,
soit le php appelé plante
soit ton erreur est ailleurs
soit...    ( nickadele++ en fait ! )

j'ai testé  ( sans regarder le code, uniquement en le copiant/collant ! )
t.htm :
<script>
function aff_discution() {
 var xhr_object = null;
 if(window.XMLHttpRequest)
  xhr_object = new XMLHttpRequest();
 else if(window.ActiveXobject)
  xhr_object = new ActiveXobject("Microsoft.XMLHTTP");
 else{
  alert("Votre navigateur n'est pas compatible avec XMLHttpRequest");
  return;
 }
 xhr_object.open("POST", "t.php", true);
 xhr_object.onreadystatechange = function () {
  if (xhr_object.readyState== 4) {
   if (xhr_object.status == 200) {
    alert(xhr_object.responseText);
   }
  }
 }
 xhr_object.send('');
}
aff_discution();
</script>

t.php
<?php echo 'ok'; ?>

"ok" est bien affiché
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 juil. 2008 à 13:30
euh... enfait, testé uniquement avec FF, pas vérifié avec IE....
mais "à l'oeil", pas de raisons, et si c'est le cas, le debuuger dit ce qui ne va pas.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
7 juil. 2008 à 15:50
Salut,

Merci pour ces réponses !

l'erreur se passe coté client...

Je n'ai pas de message d'erreur !

j'ai mis la condition du statut dans la condition du readystate donc pas d'erreur !

J'ai fais un appel a la fonction déja !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 juil. 2008 à 16:36
>>'erreur se passe coté client...
donc il y a un message
>>Je n'ai pas de message d'erreur !
ah ben ? et comme je fais, avec ce que tu donnes... pas d'erreur !
donc,

soit  document.getElementById('messages').innerHTML = xhr_object.responseText; qui plante
soit tu n'appelles pas la fonction
soit ton erreur est ailleurs.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
7 juil. 2008 à 17:00
mon code d'appel marche mais ça vient peut être de mon code php, je vais voir !

mon code php :

<?php
if(isset($_POST['message']) && isset($_POST['pseudo1']) && isset($_POST['pseudo2'])) {
 mysql_connect('','','');
 mysql_select_db('');
 
 $pseudo1 = urldecode($_POST['pseudo1']);
 $pseudo2 = urldecode($_POST['pseudo2']);
 $message = urldecode($_POST['message']);
 
 $sql = "INSERT INTO messages VALUES('','".$pseudo1."','".$pseudo2."','".$message."','non')";
 mysql_query($sql) or die(mysql_error());
 
 $query = "SELECT * FROM messages WHERE expediteur='".$pseudo1."' AND destinataire='".$pseudo2."'";
 $retour = mysql_query($query);
 
 while($row = mysql_fetch_array($retour)) {
  echo $row['expediteur'].' : '.$row['message'].'
';
 }
 
 mysql_close();
} else {
 mysql_connect('','','');
 mysql_select_db('');
 
 $query = "SELECT * FROM messages WHERE expediteur='".$pseudo1."' AND destinataire='".$pseudo2."'";
 $retour = mysql_query($query);
 
 while($row = mysql_fetch_array($retour)) {
  echo $row['expediteur'].' : '.$row['message'].'
';
 }
}
?>

Avez vous une solution ?

merci d'avance !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
7 juil. 2008 à 17:08
Roooh,

Tu fais un POST, mais tu n'envoie rien dans le POST.
En gros t'as envoyé une lettre dument affranchie, mais VIDE....

En fait, la release de ce projet de chat c'est pour 2040 ou 2050 ?

;o)
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
7 juil. 2008 à 17:54
Salut,

dans le fichier recup_message.php si je met ce code, ça ne marchera pas car je dois aussi enregistrer des messages si il y en a !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
7 juil. 2008 à 17:55
lol, bosses un peu quoi !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
7 juil. 2008 à 18:00
oui, c'est ce que je fais, d'ailleur, je ne vois pas pourquoi tu as changé le code du fichier, ça sert a rien !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
7 juil. 2008 à 18:05
Déjà que t'as du mal avec la partie frontale, j'ai pas voulu t'encombrer avec d'autre trucs...
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
7 juil. 2008 à 18:18
c'est quoi la partie frontale ?

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
8 juil. 2008 à 10:11
On peut diviser un site internet en trois parties :

- partie front (vue client) : c'est c'est que voit l'internaute (le html, le javascript)
- partie back moteur : les scripts de génération des pages du site (le php, l'asp, les jsp, etc)
- partie back administration : les programmes qui permettent de modifier les bases de données sur lesquelles reposent les portions dynamique du site, ou la manière dont est paramétrée et générée la partie frontale.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
8 juil. 2008 à 10:17
ok, merci de l'explication !

Pour mon problème je l'ai toujours mais je vais essayer de me débrouiller !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
8 juil. 2008 à 10:22
Sur deux fils de discussion, tu as toutes les réponses.
ici et là : http://www.javascriptfr.com/infomsg_PROBLEME-AVEC-XMLHTTPREQUEST_1164220.aspx#22
Il te suffit de rassembler les morceaux.
Si tu n'y arrives pas ben...

Bon courage quand même.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
8 juil. 2008 à 10:29
ok,

merci

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
Rejoignez-nous