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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [AJAX] onreadystatechange non reconnu

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[AJAX] onreadystatechange non reconnu

n°1929884
matt10000
Posté le 07-10-2009 à 17:07:36  profilanswer
 

Bonjour à tous,
 
j'utilise une fonction qui met à jour une base de données lors de clic sur des boutons.
Voici la fonction appelée

Code :
  1. function ajaxDeco(){
  2. var xhr_object = null;
  3. if(window.XMLHttpRequest){ // Firefox  
  4.  xhr_object = new XMLHttpRequest();
  5. }else if(window.ActiveXObject){ // Internet Explorer  
  6.  xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  7. }else { // XMLHttpRequest non supporté par le navigateur  
  8.  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  9.  return;
  10. }
  11. xhr_object.open("POST","ajaxDeco.php",true);
  12. xhr_object.onreadystatechange = function(){
  13.  //alert("readyState "+xhr_object.readyState);
  14.  if(xhr_object.readyState==4){
  15.   //alert("status "+xhr_object.status);
  16.   if(xhr_object.status==200){
  17.    alert("OK" );
  18.   }
  19.  }
  20. }
  21. xhr_object.send();
  22. }


 
vous l'aurez compris le fichier ajaxDeco.php exécute une requête pour faire la mise à jour de ma base.
moi je n'ai pas de problème avec ces mises à jours par contre cela ne fonctionne pas pour tout le monde.
Et pourtant, j'ai ajouté des alert pour au niveau de la reconnaissance du navigateur et tout à l'air normal.
Lorsque j'active la ligne //alert("readyState "+xhr_object.readyState);
les utilisateurs ayant des problèmes me disent qu'aucune alert ne s'affiche.
 
Savez-vous d'où cela peut provenir ?
du navigateur ?
de mon fichier php ?
d'autre chose ?
 
merci à tous pour votre aide et bonne soirée
Matt

mood
Publicité
Posté le 07-10-2009 à 17:07:36  profilanswer
 

n°1930025
SICKofitAL​L
Razoreater
Posté le 07-10-2009 à 23:06:02  profilanswer
 

A moins que tu ne tiennes absolument à garder ton code à toi, pourquoi ne pas utiliser les frameworks qui existent et qui sont éprouvés ?
Regardes par là : http://docs.jquery.com/Ajax
 
Chez toi ca donnerait un truc tout con du style :

Code :
  1. $.ajax ({
  2.   type: "POST",
  3.   url: "ajaxDeco.php",
  4.   success: function (msg) {
  5.     alert ("OK - " + msg);
  6.     return;
  7.   }
  8. });


Message édité par SICKofitALL le 07-10-2009 à 23:08:16

---------------
"And at the end it is only YOU, ME AND THE VIOLENCE !"
n°1930036
bul_3
Posté le 08-10-2009 à 06:33:52  profilanswer
 

bonjour,
 

Code :
  1. <script type="text/javascript">
  2. function ajaxDeco()
  3. { var xhr_object = null;
  4.  if ( window.XMLHttpRequest )
  5.    { xhr_object = new XMLHttpRequest(); }
  6.  else  { if ( window.ActiveXObject )
  7.       { xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );}
  8.     else  {  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  9.                         return;
  10.                      }
  11.             }
  12.       xhr_object.open("POST","ajaxDeco.php",true);
  13.       xhr_object.onreadystatechange = function()
  14.       {   if(xhr_object.readyState==4)
  15.          {   if(xhr_object.status==200)
  16.             {   alert(xhr_object.responseText);   }
  17.          }
  18.       }
  19.       xhr_object.send();
  20.    }
  21. ajaxDeco();
  22. </script>

 
ça ira mieux
 
@+
 
ps : @SICKofitALL : 100k pour remplacer quelques lignes en javascript ????

Message cité 1 fois
Message édité par bul_3 le 08-10-2009 à 06:37:11
n°1930040
SICKofitAL​L
Razoreater
Posté le 08-10-2009 à 08:04:29  profilanswer
 

bul_3 a écrit :

bonjour,
 
ps : @SICKofitALL : 100k pour remplacer quelques lignes en javascript ????


pas 100, 55k en minifié et même 20 une fois gzippé par le serveur, ca reste honnete.
Et vu que ca existe tout fait et que ca  marche bien :)


---------------
"And at the end it is only YOU, ME AND THE VIOLENCE !"
n°1930047
bul_3
Posté le 08-10-2009 à 08:38:26  profilanswer
 

sauf
que c'est un sur-langage propriétaire à apprendre
que pour maintenir et pour l'avenir, la pérennité [edit]  je craindrais
que la compatibilité multi-navigateurs  et autres
bibliothèques de fonctions n'est pas toujours là
que si on n'utilise que pour ajax ( 10 lignes
maxi en js ), j'ai des doutes sur l'utilité
...
ce n'est que mon avis et ça ne fait pas le moine.
@+

Message cité 2 fois
Message édité par bul_3 le 08-10-2009 à 16:45:02
n°1930301
tpierron
Posté le 08-10-2009 à 16:40:15  profilanswer
 

Ton problème ne serait pas lié aux paramètres de sécurité du navigateur ? J'utilise exactement le même code, et je ne me rappelle pas avoir eu de problèmes particuliers chez les clients (qui utilisent le site principalement en intranet, donc avec une sécurité un peu moins paranoïaque).
 
Sinon, ça fait un paquet de fois que je vois ce code pour gérer les requètes XmlHttpRequest: une closure d'une variable locale dans une fonction annonyme. Je ne sais pas si c'est ton cas, mais après avoir fait plusieurs bench, ce système cause un memory leak MASSIF dans Internet Explorer 7 et 8, chez moi et chez beaucoup d'autres clients (à vu de nez, c'est une centaine de Ko par requète).
 
Le fix :

Code :
  1. function ajaxDeco()
  2. {
  3. var xhr_object = null;
  4. if(window.XMLHttpRequest){ // Firefox  
  5. xhr_object = new XMLHttpRequest();
  6. }else if(window.ActiveXObject){ // Internet Explorer  
  7. xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  8. }else { // XMLHttpRequest non supporté par le navigateur  
  9. alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  10. return;
  11. }
  12. xhr_object.open("POST","ajaxDeco.php",true);
  13. xhr_object.onreadystatechange = function(){
  14. //alert("readyState "+xhr_object.readyState);
  15. if(xhr_object.readyState==4){
  16.  //alert("status "+xhr_object.status);
  17.  if(xhr_object.status==200){
  18.    alert("OK" );
  19.    delete xhr_object.onreadystatechange
  20.  }
  21. }
  22. }
  23. xhr_object.send();
  24. }


 
Ça brise la référence circulaire entre xhr_objet et la fonction annonyme.


Message édité par tpierron le 08-10-2009 à 16:43:41
n°1930303
bul_3
Posté le 08-10-2009 à 16:44:20  profilanswer
 

non, non,
c'était un souci de { } mal placé.
tel que j'ai mis : ça baigne.
@+

n°1930338
tpierron
Posté le 08-10-2009 à 17:18:20  profilanswer
 

bul_3 a écrit :

non, non,
c'était un souci de { } mal placé.
tel que j'ai mis : ça baigne.
@+


 [:robert de niro] Ha, euh, faut dire que le code n'est pas super bien indenté, j'ai un peu de mal à voir la différence entre les deux versions. Cela dit, j'ai fait un copier/coller du code original dans une page de test et ça_marche_chez_moi™ (enfin, si on exclu le memory leak).

n°1930483
gatsu35
Posté le 09-10-2009 à 00:56:05  profilanswer
 

bul_3 a écrit :

sauf
que c'est un sur-langage propriétaire à apprendre
que pour maintenir et pour l'avenir, la pérennité [edit]  je craindrais
que la compatibilité multi-navigateurs  et autres  
bibliothèques de fonctions n'est pas toujours là
que si on n'utilise que pour ajax ( 10 lignes
maxi en js ), j'ai des doutes sur l'utilité
...
ce n'est que mon avis et ça ne fait pas le moine.
@+


 
Ho oui super \o/
Je réagissais comme toi avant, j'ai tout codé mes propres truc, même des micros bibliothèques d'animation. Mais force est de constater que tu gagnes un temps considérable à développer en utilisant une vrai librairie telle que mootools (jquery à part car c'est pas une lib faite pour de vraies applications très orientées OO en JS).
Il y a beaucoup d'avantages à utiliser une libraire, tel que le gain de temps et surtout la simplicité de codage et l'utilisations d'effets déjà tout prêts sans avoir à se casser la tête. Mais derrière comme tu le dis, on est dépendant de la librairie et de son évolution. Si la librairie n'évolue plus, tu auras du mal à trouver des "trucs" tous fait qui utilisent la version de ta lib.
 
Le mieux étant d'avoir une "interface" donc les fonctions sont appelées par les objets que tu as codé, et derrière tu n'as juste qu'à plugger n'importe quelle autre librairie

n°1930516
kao98
...
Posté le 09-10-2009 à 09:43:46  profilanswer
 

bul_3 a écrit :

sauf
que c'est un sur-langage propriétaire à apprendre
C'est du javascript. C'est pas un sur-langage comme tu dis, c'est une librairie. Si maintenant, les développeurs ne veulent même plus apprendre de nouvelles librairies en fonction de leurs besoins, où va-t'on !?
 
que pour maintenir  
Hein ??
 
et pour l'avenir, la pérennité  
Des librairies comme mootools ou jquery sont maintenant très utilisée. Elles ne vont pas être obsolètes en l'espaces de quelques mois à peine.
 
[edit]  je craindrais
que la compatibilité multi-navigateurs  
justement, ce type de librairie a pour fonction première d'affranchir l'utilisateur de ça en étant compatible avec un nombre important de navigateurs.
 
et autres  
bibliothèques de fonctions n'est pas toujours là
que si on n'utilise que pour ajax ( 10 lignes
maxi en js ), j'ai des doutes sur l'utilité
...
Il existe des lib super petites pour ce genre de besoin. Et les plus grosses librairies ont des mécanismes permettant de ne charger que ce qui est nécessaire.
 
ce n'est que mon avis et ça ne fait pas le moine.
@+


Tu devrais essayer de t'intéresser à ces librairies. Elles permettent vraiment de se faciliter la vie, et de faire des trucs très facilement qui serait assez complexe en temps normal.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98

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

  [AJAX] onreadystatechange non reconnu

 

Sujets relatifs
Java Ajax auto completionAjax Combo box
Upload AJAX + JSP avec iframe et apache.commons.fileuploadProbleme d'upload fichiers div ajax(c urgent)
AJAX et effet sur image style ThickboxJavascript/Ajax vers un autre domaine
AJAX : problème de compatibilité IE / FirefoxAppel AJAX qui s'effectue trop de fois (event JS)
[ajax] Mon readyState ne dépasse pas 1 avec IE[Ajax/JS/PHP] Gérer l'affichage d'un formulaire
Plus de sujets relatifs à : [AJAX] onreadystatechange non reconnu


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR