Problème avec XMLHTTPRequest !

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 2 juil. 2008 à 15:51
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 3 juil. 2008 à 10:11
Salut,

Et oui, c'est encore moi, vous devez vous dire que je suis un gros nul !

Peut être, peut être pas !

Je reviens vous voir car je dois finir un chat pour ce soir (je peus vous dire que c'est pas du gateau, je me suis pas foutu de la gueule de mon patron de je lui ai fait en utilisant le DOM et ajax enfin bref je suis pas la pour raconter ma vie ) et que j'ai un gros problème !

J'ai fait une fonction pour l'envoi de message mais elle ne marche pas, je crois savoir pourquoi mais je ne connais pas la solution donc je me suis dit que c'était peut être le moment de passer vous dire bonjour, lol

Je pense que la raison pour laquelle ça ne marche pas c'est que j'ai enlevé certaine choses dans le code d'origine car je ne veus pas de retour !

Ma fonction :

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 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("GET", "recup_message.php?message="+O_text+"&pseudo1="+O_pseudo1+"&pseudo2="+O_pseudo2, true);
 
 xhr_object.send(null);
 
 if(document.all) {
  document.getElementById('envoyer').attachEvent('onclick',recup_text());
 } else {
  document.getElementById('envoyer').addEventListener('click',recup_text(),false);
 }
}

Avez vous une solution ?

Merci d'avance !

a++

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

22 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
3 juil. 2008 à 09:57
1) Oui pour envoyer un formulaire, il faut spécifier dans l'entête HTTP que les données sont d'un certain type. Sinon comment différencier l'envoi d'une image (format binaire), d'un ensemble de valeur texte issues d'un formulaire ?

2) L'utilisation du mode asynchrone nécessite une fonction de rappel. Mais il faut prendre en compte les états de l'objet XmlHttpRequest et de la communication HTTP par lesquels passent la réponse pour la traiter convenablement :

 xhr_object.onreadystatechange = function () {
  if (xhr_object.readyState== 4) { // Question pour nicomilville : pourquoi 4 et pas 256, pi ou 1/3 ? (voir fonctionnement de XmlHttpRequest)
    if (xhr_object.status == 200)  // Question pour nicomilville : pourquoi 200 et pas 1, 2 3 ou -1 ? (voir protocole HTTP)
     // traiter la réponse
  }
 }

> Le liens que tu m'as donnée, je venai juste de le lire, je ne vois pas
ce qui manque, a part setRequestHeader mais je ne suis pas sur que ce
soit important !

Lire ne suffit, comprendre c'est mieux...

Je ne suis pas là pour donner des leçons, mais :

- utiliser ajax, sans un minimum de notions sur le protocole utilisé par ce mode de communication (HTTP). C'est comme conduire une voiture sans permis, c'est faisable, mais ça mène généralement à des désastres.
- construire un système de chat en une journée, ou se poser la question du mode de communication le dernier jour avant de rendre un projet, ça relève du délire. Si c'est le cas, je donne entièrement raison à votre patron.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
3 juil. 2008 à 10:11
>>// Question pour nicomilville : pourquoi 4 et pas 256, pi ou 1/3 ? (voir fonctionnement de XmlHttpRequest)
      Pourquoi 4 ? parce que 4 signifie que les donnée ont été reçu !

>>// Question pour nicomilville : pourquoi 200 et pas 1, 2 3 ou -1 ? (voir protocole HTTP)
      Parce que 200 veut dire que tout est ok !

a++

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