[Résolu]Problème avec Ajax


antinomx
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 277
Inscription: 23 Aoû 2008

[Résolu]Problème avec Ajax

Message le Sam Aoû 23, 2008 0:25

Bonsoir à tous,

J'utilise actuellement un script ajax qui fonctionne très bien avec Firefox mais pas avec Internet Explorer (5,6 et 7)...

J'ai bien essayé de le débugguer avec la "console" d'IE mais rien n'y fait, Firefox quand à lui ne retourne pas d'erreur ; Etant un peu perdu pourriez vous me donner un coup de main ?

Le script en question :
Code: Tout sélectionner
var http_request = false;
function makeRequest(url, parameters, resultdiv, loader) {
   http_request = false;
   if (window.XMLHttpRequest) { // Mozilla, Safari,...
      http_request = new XMLHttpRequest();
           //if (http_request.overrideMimeType) {
         //http_request.overrideMimeType('text/xml');
         //http_request.overrideMimeType('text/html; charset=ISO-8859-1');
      //}
   } else if (window.ActiveXObject) { // IE
      try {
         http_request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
                  try {
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
               } catch (e) {}
         }
      }
      if (!http_request) {
      alert('Votre navigateur ne supporte pas la technologie XMLhttp !');
      return false;
      }
      //http_request.onreadystatechange = alertContents;
      http_request.open('GET', url + parameters, true);
     
      http_request.onreadystatechange = function alertContents() {      
   if (http_request.readyState == 1) {
           document.getElementById(loader).style.display = 'block';
      document.getElementById("loadingtxt").style.display = 'block';
        }
        if (http_request.readyState == 4) {
      if (http_request.status == 200) {
                  //alert(http_request.responseText);
                  result = http_request.responseText;
                  document.getElementById(resultdiv).innerHTML = result;
         document.getElementById(loader).style.display = 'none';           
         document.getElementById("loadingtxt").style.display = 'none';
            } else {
                  alert('Une erreur s\'est produite !');
            }
         }
      }
      http_request.send(null);
}


D'avance merci pour votre aide
Dernière édition par antinomx le Sam Aoû 23, 2008 16:04, édité 1 fois.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8303
Inscription: 23 Nov 2005

Message le Sam Aoû 23, 2008 11:03

Avec IE5 déjà l'Ajax je pense que tu peux oublier, vu comment ce navigateur supporte le JS.

Pour ce qui est d'IE5 et IE6, tu as essayé de faire du debbugage pas à pas en mettant des alert() javascript à chaque étape du code pour voir à partir d'où tu as un problème.


Jeviensderio
WRInaute passionné
WRInaute passionné
 
Messages: 1340
Inscription: 29 Sep 2006

Message le Sam Aoû 23, 2008 11:18

Pourquoi ne pas utiliser un script tout fait, comme anaa.eu, avec les fonctions de base et qui est certain de fonctionner sur tous navigateurs....

Mais si c'est la mise à jour de la page qui ne fonctionne pas, on ne peut en juger, cela dépend comment le script est utilisé (formulaire ou autres).


antinomx
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 277
Inscription: 23 Aoû 2008

Message le Sam Aoû 23, 2008 14:47

Bonjour et merci pour vos réponses !

Pour IE5 ok j'oublie...
J'ai bien essayé de débugguer avec des alert() un peu partout et pas moyen :?
C'est quand même symptomatique ! Quelle poisse cet IE... Ce que je n'arrive vraiment pas a comprendre c'est pourquoi Firefox ne retourne aucune erreur...
J'utilise ce script aussi bien à partir de formulaire (onsubmit()) qu'avec des liens appelant la fonction...
La fonction se lance jusqu'à faire apparaître l'animation de chargement puis se fige.

Pour anaa.eu j'ai regardé mais c'est pas l'idéal niveau poids (+ de 8ko), après c'est sur que si je n'ai pas le choix ben...

Il n'y a rien dans mon script qui à première vue est incompatible IE ?
Je n'ai pas beaucoup d'expérience donc peut être que la structure du "bouzin" n'est pas bonne ou autre...

Merci pour votre aide

zeb
WRInaute accro
WRInaute accro
 
Messages: 3283
Inscription: 5 Déc 2004

Re: Problème avec Ajax

Message le Sam Aoû 23, 2008 14:49

Code: Tout sélectionner
var http_request = false;
function makeRequest(url, parameters, resultdiv, loader) {
   http_request = =null;
   if (window.XMLHttpRequest) {
      http_request = new XMLHttpRequest();
   }
   else if (window.ActiveXObject) {
      http_request = new ActiveXObject("Microsoft.XMLHTTP");
   }
      if (!http_request) {
      alert('Votre navigateur ne supporte pas la technologie XMLhttp !');
      return false;
      }
      //http_request.onreadystatechange = alertContents;
      http_request.open('GET', url + parameters, true);
     
      http_request.onreadystatechange = function alertContents() {      
   if (http_request.readyState == 1) {
           document.getElementById(loader).style.display = 'block';
      document.getElementById("loadingtxt").style.display = 'block';
        }
        if (http_request.readyState == 4) {
      if (http_request.status == 200) {
                  //alert(http_request.responseText);
                  result = http_request.responseText;
                  document.getElementById(resultdiv).innerHTML = result;
         document.getElementById(loader).style.display = 'none';           
         document.getElementById("loadingtxt").style.display = 'none';
            } else {
                  alert('Une erreur s\'est produite !');
            }
         }
      }
      http_request.send(null);
}


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8303
Inscription: 23 Nov 2005

Message le Sam Aoû 23, 2008 14:54

Tu as une page en ligne où on peut jeter un oeil ?

Quand je faisais de l'AJAX à la mano (avant de m'essayer à prototype et jquery), je partais du script suivant :

Code: Tout sélectionner
      var xhr_object = null;    
      if(window.XMLHttpRequest) // Firefox
         xhr_object = new XMLHttpRequest();
      else if(window.ActiveXObject) // Internet Explorer
         xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
      else { // XMLHttpRequest non supporté par le navigateur
         alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      return;
      } 
      xhr_object.open("GET", "loaditem.php?id="+id, false);
      xhr_object.send(null);
      if   (xhr_object.readyState == 4)
      {
         if (xhr_object.responseText!='')
         {
            document.getElementById("item").innerHTML = document.getElementById("item").innerHTML + xhr_object.responseText;
         }
      }
   }


Si ca peut t'aider...


antinomx
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 277
Inscription: 23 Aoû 2008

Message le Sam Aoû 23, 2008 15:12

@Zeb : Ca ne fonctionne pas :( Cette fois ci rien ne se lance, un peu comme si il n'y avait pas de script... En enlevant un "=" juste avant le "null" à la troisième ligne ça revient au fonctionnement précédent.

@UsagiYojimbo : Malheureusement j'suis en local mais je vais essayer de la mettre en ligne, merci pour ta base de script avec un peu de bol j'arriverai à l'adapter.

En tout cas merci beaucoup vous répondez rapidement et c'est super !

EDIT : HOURRA ! C'est en fait un truc tout c*n : dans le code c'est la ligne
Code: Tout sélectionner
result = http_request.responseText;
document.getElementById(resultdiv).innerHTML = result;

à modifier comme ça
Code: Tout sélectionner
document.getElementById(resultdiv).innerHTML = http_request.responseText;

Bon ben c'est génial :) :) Encore merci !

PS : C'est drôle cette bouse d'IE est bien plus rapide que Firefox pour executer la fonction...

zeb
WRInaute accro
WRInaute accro
 
Messages: 3283
Inscription: 5 Déc 2004

Message le Sam Aoû 23, 2008 16:12

antinomx a écrit:PS : C'est drôle cette bouse d'IE est bien plus rapide que Firefox pour executer la fonction...

pense qu'IE évolue dans un environnement pré chargé pour lui avec toute l'api windobe derrière.
Les autres navigateurs doivent travailler en milieu hostile ;-)


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8303
Inscription: 23 Nov 2005

Message le Sam Aoû 23, 2008 16:17

antinomx a écrit:EDIT : HOURRA ! C'est en fait un truc tout c*n : dans le code c'est la ligne
Code: Tout sélectionner
result = http_request.responseText;
document.getElementById(resultdiv).innerHTML = result;

à modifier comme ça
Code: Tout sélectionner
document.getElementById(resultdiv).innerHTML = http_request.responseText;


En fait je pense que c'est surtout du au fait que la variable result n'était pas déclarée :

Code: Tout sélectionner
var result = http_request.responseText;
document.getElementById(resultdiv).innerHTML = result;


aurait sans doute mieux fonctionné.


antinomx
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 277
Inscription: 23 Aoû 2008

Message le Sam Aoû 23, 2008 22:55

zeb a écrit:pense qu'IE évolue dans un environnement pré chargé pour lui avec toute l'api windobe derrière.
Les autres navigateurs doivent travailler en milieu hostile ;-)


Merci pour cet éclaircissement !

UsagiYojimbo a écrit:En fait je pense que c'est surtout du au fait que la variable result n'était pas déclarée :

Code:

var result = http_request.responseText;
document.getElementById(resultdiv).innerHTML = result;


aurait sans doute mieux fonctionné.


Bien vu ! :) Firefox est vraiment peace alors...

Merci beaucoup pour votre aide !


informatiquegifs
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 360
Inscription: 27 Aoû 2003

Message le Dim Aoû 24, 2008 7:14

mdr j'ai cru t'avais un problème avec les WC :)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: sequvafa et 0 invités