Problème avec XMLHTTPRequest !

Signaler
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
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

Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Ça manque de données nico qu'est ce qui marche pas et les erreurs.

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
Re maelob,

Ba ça manque de donnée tout simplement pare ue je n'ai pas d'erreur...

Mais dans une page php j'ai une requête qui insert le text envoyé dans une table et rien ne se passe, je suis sur que ça ne vient pas du fichier php car je l'ai testé !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Tu ne récupère pas la réponse et tu ne l'affiche pas.

      // on récupère la réponse au format texte ...
      var reponse = xhr.responseText;

      // on récupère la réponse au format xml ...
      var reponse = xhr.responseXML.documentElement;

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
oui, justement, je veus pas de la réponse, moi ce que je veus c'est juste envoyer du text dans ce fichier !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
hummm...
Je comprend pas

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
moi non plus !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Salut,

Vu de loin, tu utilises l'objet en mode asynchrone. Mais où est définie et où est branchée la fonction la fonction de callback (xhr_object.onreadystatechange= function() { }) ?
Il n'y a aucune fonction qui est branchée au retour, ça doit être pour ça, qu'il ne se passe rien. Mets une fonction vide ou utilises le mode synchrone.

Une fonction vide, c'est quand même moyen, pourquoi ton script ne renverrait pas au moins un code pour dire, "j'ai enregistré" ou "je me suis planté" ?
Tu envoies des données, mais tu pars du principe que du moment que c'est envoyé, c'est enregistré, hum... (air songeur)

send(null) n'est pas trop recommandé, utilise plutôt  send("")
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
ok,

merci, je vais tester ça !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
ça marche pas, j'ai essayé tes deux solutions !

Je crois que ça vient du fait que j'aissai de mettre des variables dans l'url car quand je veus que ça me retourne quelque chose, normalement dans tout les cas j'ai un message et la rien ne se passe !

Y a t'il un moyen particulier de passer des variables en ajax ?

Merci de votre aide !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Ton url n'a pas l'air incorrecte. tu as le droit d'envoyer des paramètres (en GET ou en POST), par contre les as tu encodé ?
Parce que si tu laisses des espaces (%20 en url encodée) ou d'autres caractères exotique (éà etc), ça ne marchera pas.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
non, je ne les ai pas encoder, comme faut il s'y prendre  ?

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Un truc au passage, tu envoies un message complet, dans l'url, QUELLE HORREUR !!!
il faut tout faire en POST... Alerte Rouge !!! (Le navigateur va s'autodétruire dans 5 secondes...)

Une url n'est pas limité par la norme (W3C) mais limité par les capacités des navigateurs (certains disent 256 / d'autre 1024 caractères, mais c'est déjà beaucoup)

Pour encoder les paramètres, il faut utiliser la fonction javascript escape ou la fonction php urlencode
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
ok, mais comment je fait pour envoyer des variables avec la methode post ?

Moi je veus bien mais je sais pas comment envoyer des variables en POST !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
S'il vous plais aidez moi, si je ne donne pas mon code a mon patronnce soir, je crain le pire !

a++

PS : je veus juste savoir comment on envoi des variable en POST, si c'est possible, sinon ba je sais pas, peut être que je serai viré !

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Je veux bien vous aider mais certainement pas être tenu pour responsable de votre emploi...
C'est un forum d'entraide pas une cellule de soutien psychologique.
La menace n'y fera rien...
Sinon, il suffit de taper quelques mots dans un moteur de recherche comme "ajax send post"
Première réponse du bousin : http://www.xul.fr/xml-ajax.html

Bon courage.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
Merci, entre temps j'ai fait cette recherche en français et j'ai essayé de mettre les paramettre dans send mais ça marche toujours pas !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
Re,

Même en suivant ce qui est écrit, ça marche pas !

voici mon code javascript :

function recup_text() {
 var O_text = escape(document.getElementById('text').value);
 var O_pseudo1 = escape(document.getElementById('pseudo1').value);
 var O_pseudo2 = escape(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.open("POST",'recup_message.php', true);
 
 xhr_object.onreadystatechange = function () {
  if (xhr_object.readyState== 4) {
   document.getElementById('discution').innerHTML = xhr_object.responseText;
  }
 }
 
 xhr_object.send(data);
}

Pouvez vous m'aider ?

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
> Merci, entre temps j'ai fait cette recherche en français et j'ai essayé
de mettre les paramettre dans send mais ça marche toujours pas !

Le lien que j'ai publié contient toutes les réponses à vos questions. Vous avez peut être espérer que j'allais faire le programme à votre place. Bé non.

> Même en suivant ce qui est écrit, ça marche pas !

Faux, le code que vous avez publié montre que vous n'avez pas lu ou pas cherché à comprendre ce qui est écrit

Il manque juste deux lignes dans votre programme pour le faire fonctionner. Ces lignes sont dans la page publiée. A vous de jouer.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
33
Premièrement :

Je ne voulais pas que vous me fassiez le programme, je connais le règlement, tout ce que je voulais c'est que quelqun m'aide, et me donne des conseil (ce que tu as fais)

Deuxièmement :

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 !

Merci

a++

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