Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
777 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  XMLHttpRequest qui fout le bordel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

XMLHttpRequest qui fout le bordel

n°1381511
gooopil
pfiew
Posté le 05-06-2006 à 17:38:58  profilanswer
 

Salut,
 
Je voulais m'initier un peu à l'ajax toussa, mais ça se passe pas comme prévu...
Voila mon code :

Code :
  1. function getHTTPObject()
  2. {
  3.    var xmlhttp = false;
  4.    if(document.all)
  5.    {
  6.       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP" ) ;
  7.    }
  8.    else
  9.    {
  10.       xmlhttp = new XMLHttpRequest();
  11.    }
  12.    if (xmlhttp)
  13.    {
  14.       xmlhttp.onreadystatechange=function()
  15.       {
  16.          if (xmlhttp.readyState == 4) /* 4 : état "complete" */
  17.          {
  18.             alert(xmlhttp.readyState);
  19.             if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
  20.             {
  21.                alert (xmlhttp.responseText);
  22.                //response = xmlhttp.responseXML.documentElement;
  23.                     .... ( traitement appel de SpUpdate(response) )
  24.             }
  25.          }
  26.        }
  27.     }
  28.     return xmlhttp;
  29. }


 
Ca c'est la fonction qui est appelé par mon formulaire (onSubmit="SpUpdate('')" ) et qui servira aussi de fonction de traitement pour le retour

Code :
  1. function SpUpdate(response)
  2. {
  3. //Receive data
  4. if (response!='')
  5. {
  6. }
  7. //Send data
  8. else
  9. {
  10.  var xmlhttp = getHTTPObject();
  11.  if (!xmlhttp)
  12.  {
  13.   return true;
  14.  }
  15.  xmlhttp.open("POST", "aj.php",true);
  16.  xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  17.  var query= 'spDate='+document.getElementById('spDate').value;
  18.  if (document.getElementById('spType').checked)
  19.  {
  20.   query = query +'&spType=2';
  21.  }
  22.  xmlhttp.send(query);
  23.  return false;
  24. }
  25. }


 
Ca c'est ce que renvoie aj.php

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
  2. <response>
  3.    <method>SpUpdate</method>
  4.              <data>.....</data>
  5. </response>


 
 
Les problèmes :

  • Sous IE:  

(1) J'ouvre une nouvelle page, je clique sur le submit de mon form, ca m'alerte bien le xmlhttp.readyState =4, puis ça m'alerte parfaitement le contenu de la réponse. Par contre, le formulaire est quand même envoyé par l'action du formulaire, malgré le return false à la fin...
(2) Ensuite, si je reclique sur mon submit, pas d'alertes, rien, ca passe directement par l'action du formulaire....Par contre, si j'ouvre une nouvelle page, ca remarche et je peux recommencer le (1)....
 

  • Sous FF:  

Ca m'affice le 4 du readyState, mais rien d'autre. Le formulaire est envoyé par l'action du form, mais contrairement à IE, je peux recliquer sur le formulaire et ca recommence le cycle. Par contre, la console JS me renvoie ça:
[quote]
Error: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: http://localhost/home/modules/aj_scripts.js :: anonymous :: line 23"  data: no]
Source File: http://localhost/home/modules/aj_scripts.js
Line: 23
[quote]
La ligne 23 correspond au if (xmlhttp.status == 200)....
 
Je comprend pas.... :pt1cable:  
Donc si quelqu'un a une idée, je suis preneur. Merci :)

Message cité 1 fois
Message édité par gooopil le 05-06-2006 à 17:46:27
mood
Publicité
Posté le 05-06-2006 à 17:38:58  profilanswer
 

n°1381522
ledzep2
Posté le 05-06-2006 à 17:55:28  profilanswer
 
n°1381529
gooopil
pfiew
Posté le 05-06-2006 à 17:59:29  profilanswer
 


 
Sympa mais des tutos ajax j'en ai c'est pas le problème...

n°1381532
ledzep2
Posté le 05-06-2006 à 18:02:38  profilanswer
 

Tu veux absolument une méthode asynchrone?

n°1381535
gooopil
pfiew
Posté le 05-06-2006 à 18:06:03  profilanswer
 

ledzep2 a écrit :

Tu veux absolument une méthode asynchrone?


Oui, je veux pas de bloquant...Sinon, tu files des tutos que tu connais pas ou que tu suis pas ? Je viens de voir que dans ton lien, l'article incite à "proscrire" les transmissions synchrones  :o

n°1381541
ledzep2
Posté le 05-06-2006 à 18:13:08  profilanswer
 

Oui mais bon c'est plus simple et ça fonctionne bien pour ce que je fais moi!
Ma question était plus au niveau de la nécessité d'utiliser telle ou telle méthode.
 
Pr ma part :
#
 xmlhttp.onreadystatechange=function()
#
     {
c'est ça qui foutait le wouaie...dc ça a sauté...et dc du coup synchrone...
Peux pas faire plus désolé...

n°1381562
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-06-2006 à 18:39:37  profilanswer
 

gooopil a écrit :


Les problèmes :

  • Sous IE:  

(1) J'ouvre une nouvelle page, je clique sur le submit de mon form, ca m'alerte bien le xmlhttp.readyState =4, puis ça m'alerte parfaitement le contenu de la réponse. Par contre, le formulaire est quand même envoyé par l'action du formulaire, malgré le return false à la fin...


Code :
  1. onSubmit="return SpUpdate('')"


 

gooopil a écrit :

(2) Ensuite, si je reclique sur mon submit, pas d'alertes, rien, ca passe directement par l'action du formulaire....Par contre, si j'ouvre une nouvelle page, ca remarche et je peux recommencer le (1)....[/quote]
Doit venir de premier pb...
[quotemsg=1381511,1,19814]

  • Sous FF:  

Ca m'affice le 4 du readyState, mais rien d'autre. Le formulaire est envoyé par l'action du form, mais contrairement à IE, je peux recliquer sur le formulaire et ca recommence le cycle. Par contre, la console JS me renvoie ça:
[quote]
Error: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: http://localhost/home/modules/aj_scripts.js :: anonymous :: line 23"  data: no]
Source File: http://localhost/home/modules/aj_scripts.js
Line: 23
La ligne 23 correspond au if (xmlhttp.status == 200)....


corrige de la même façon pour le form, on va faire étape par étape!
 

n°1381581
gooopil
pfiew
Posté le 05-06-2006 à 18:56:55  profilanswer
 

J'avais oublié le return  [:aless]  !!!!!  
 
Merci anapajari :) Non seulement ça résoud le (1) mais ça résoud aussi tout le reste :love:  
 
 
Bon sinon, des commentaires sur la façon de procéder ? C'est correct/propre ? Conseils ?
La façon dont je détermine comment créer l'object xmlhttp, c'est pas terrible non ?

n°1381799
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-06-2006 à 09:39:20  profilanswer
 

Bin ça va ... :o
Ta function getHTTPObject ressemble bcp à la class HXR, j'imagine que tu t'en étais inspiré.
Le reste, bin on voit pas grand chose donc c'est dur à dire ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  XMLHttpRequest qui fout le bordel

 

Sujets relatifs
xmlhttprequestprob rechargement xmlHttpRequest
[JavaScript/XML] XMLHttpRequest pour atteindre un fichier distant ?Couleur... Element... Imbrication... Hum vous avez dis bordel?? lol
Comment transmettre des fichiers en XmlHttpRequest ? ? ?Securité du Javascript ? (XMLHttprequest)
XmlHttpRequest et PHP[Javascript] [XMLHttpRequest] Probleme IE pour récupérer données X
[Résolu] XMLHttpRequest : Impossible de récupérer les donnéeslimittes du XmlHttpRequest
Plus de sujets relatifs à : XMLHttpRequest qui fout le bordel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR