[Résolu]Problème avec Ajax

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


antinomx
WRInaute impliqué
WRInaute impliqué
 
Messages: 277
Inscription: Sam Aoû 23, 2008 0:21

[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: 5200
Inscription: Mer Nov 23, 2005 10:38

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 accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

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 impliqué
WRInaute impliqué
 
Messages: 277
Inscription: Sam Aoû 23, 2008 0:21

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: 1186
Inscription: Dim Déc 05, 2004 19:47

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: 5200
Inscription: Mer Nov 23, 2005 10:38

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 impliqué
WRInaute impliqué
 
Messages: 277
Inscription: Sam Aoû 23, 2008 0:21

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: 1186
Inscription: Dim Déc 05, 2004 19:47

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: 5200
Inscription: Mer Nov 23, 2005 10:38

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 impliqué
WRInaute impliqué
 
Messages: 277
Inscription: Sam Aoû 23, 2008 0:21

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 impliqué
WRInaute impliqué
 
Messages: 356
Inscription: Mer Aoû 27, 2003 16:11

Message le Dim Aoû 24, 2008 7:14

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


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités