Se connecter / S'enregistrer
Votre question

Ajax ne fonctione pas chez certains de mes utilisateurs

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
28 Septembre 2011 15:03:54

Bonjour,

Je rencontre un problème d'Ajax car mon script ne fonctionne pas chez certaines personnes alors que je l'ai testé sur mes 4PC et cela fonctionne parfaitement. Il s'agit d'un script pour afficher les villes dans un select dès que le code postal est renseigné.
Voici mon code :

  1. <script type="text/javascript">
  2. function Ajx()
  3. {
  4. var request = false;
  5. try
  6. {request = new ActiveXObject('Msxml2.XMLHTTP');}
  7. catch (err2)
  8. { try { request = new ActiveXObject('Microsoft.XMLHTTP');}
  9. catch (err3) {
  10. try {request = new XMLHttpRequest();}
  11. catch (err1) {request = false;}
  12. }
  13. }
  14. return request;
  15. }
  16. function getphpelementid(elementid,url,endvar)
  17. {
  18. var xhr = Ajx();
  19. xhr.onreadystatechange = function()
  20. {
  21. if(xhr.readyState == 4)
  22. {
  23. if(xhr.status == 200) {
  24. if(xhr.responseText == "deco"){
  25. deco();
  26. }else{
  27. document.getElementById(elementid).innerHTML = xhr.responseText;
  28. }
  29. }else{
  30. document.getElementById(elementid).innerHTML = "<font color=\"#FF0000\">Error code " + xhr.status + "</font>";
  31. }
  32. }
  33. };
  34.  
  35. xhr.open("GET", url + endvar, true);
  36. xhr.send(null);
  37. }
  38. function selectcp()
  39. {
  40. var cp = document.getElementById('codepostal').value;
  41. var pa = document.getElementById('pays').value;
  42.  
  43. if (pa=="") {
  44. if (cp.length > 4)
  45. {
  46. getphpelementid("ville","../function.php?cp=",cp);
  47. }
  48. }
  49.  
  50. if (pa=="b") {
  51. if (cp.length > 3)
  52. {
  53. getphpelementid("ville","../function.php?pa=b&cp=",cp);
  54. }
  55. }
  56. }
  57. </script>


La page function.php sert à interroger ma base MySQL pour chercher les villes et les ajouter dans un select.

Si pour pouviez m'aider, vous me seriez d'une grande aide.

Merci par avance, Chris

Autres pages sur : ajax fonctione certains utilisateurs

a c 232 L Programmation
28 Septembre 2011 16:32:43

Salut,

Pour la création de ton objet XMLHttpRequest, je ferais pas comme ça... Mais plutôt:
  1. if(window.XMLHttpRequest) // Firefox et autres
  2. xhr = new XMLHttpRequest();
  3. else if(window.ActiveXObject){ // Internet Explorer
  4. try {
  5. xhr = new ActiveXObject("Msxml2.XMLHTTP");
  6. } catch (e) {
  7. xhr = new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. }


Et il faudrait savoir avec quels navigateurs ça marche, et quels navigateurs ça ne marche pas.
28 Septembre 2011 17:06:08

Ok donc à ce compte la ma fonction Ajx ne servirait à rien, autant tout mettre dans la fonction principale.
Pour les navigateurs c'est ça que je ne comprends pas : exemple un pc sous Windows 7 avec un IE8, ça ne marche pas... J'ai un de mes PC sous Seven et IE8 et ça marche...
Idem sous Mozilla, même configuration des PC clients et un des miens... Chez moi ça marche et pas chez eux, d'où le problème que je ne comprends pas.

Je vais déjà essayer de faire la modification pour ma déclaration Ajax pour voir si cela change quelque chose mais j'ai un doute...

Merci en tout cas de ta réponse et de m'éclairer si cela ne fonctionne encore pas.

Chris003
--------------------------------------
OmaR a dit :
Salut,

Pour la création de ton objet XMLHttpRequest, je ferais pas comme ça... Mais plutôt:
  1. if(window.XMLHttpRequest) // Firefox et autres
  2. xhr = new XMLHttpRequest();
  3. else if(window.ActiveXObject){ // Internet Explorer
  4. try {
  5. xhr = new ActiveXObject("Msxml2.XMLHTTP");
  6. } catch (e) {
  7. xhr = new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. }


Et il faudrait savoir avec quels navigateurs ça marche, et quels navigateurs ça ne marche pas.


Contenus similaires
a c 232 L Programmation
28 Septembre 2011 17:46:20

Chris003 a dit :
Ok donc à ce compte la ma fonction Ajx ne servirait à rien, autant tout mettre dans la fonction principale.
Pour les navigateurs c'est ça que je ne comprends pas : exemple un pc sous Windows 7 avec un IE8, ça ne marche pas... J'ai un de mes PC sous Seven et IE8 et ça marche...
Idem sous Mozilla, même configuration des PC clients et un des miens... Chez moi ça marche et pas chez eux, d'où le problème que je ne comprends pas.

Je vais déjà essayer de faire la modification pour ma déclaration Ajax pour voir si cela change quelque chose mais j'ai un doute...

Merci en tout cas de ta réponse et de m'éclairer si cela ne fonctionne encore pas.

Chris003


Si si, tu peux garder ta fonction Ajx, je te donnais juste un autre code qu'il vaut mieux utiliser. Et ce code tu peux le mettre dans ta fonction Ajx.
C'est juste pour éviter d'essayer de créer des objets que tu ne peux pas créer. C'est lourd de tenter de créer un objet qui va envoyer une exception, que tu vas catcher et créer un autre objet.
Alors que là, c'est un test pour voir si la fonction existe, si elle existe, on l'utilise, sinon on tente une autre.
1 Octobre 2011 18:27:58

Là je ne comprends plus rien.
Regarde cette fonction :

  1. function teste() {
  2. var m=0;
  3. var n=0;
  4.  
  5. for (i=0;i<6;i++) {
  6. if (document.quest.q1[i].checked==true) {
  7. m=i;
  8. n=1;
  9. break;
  10. }
  11. }
  12.  
  13. if (n!=0) { alert ("Taux de "+m); }


Si je mets if (n==0) { alert("formulaire non rempli"); } ça ne marche pas et je vois pas pourquoi....
Même en mettant un else ça ne fonctionne pas....

Merci de vos réponses éventuelles.

Chris
a c 232 L Programmation
2 Octobre 2011 19:32:55

Vérifie déjà que document.quest soit défini
2 Octobre 2011 23:03:18

T'as essayé avec jQuery ? C'est plus simple à faire et il doit y avoir des mesures de compatibilités dans cette bibliothèque... Enfin j'suis pas sûr mais essaye.
Ah oui, et si t'as l'un de tes visiteurs avec qui l'Ajax ne fonctionne pas qui utilise Mozilla Firefox, demande lui d'utiliser Firebug, il y a une console javascript dedans.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS