IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Message d'erreur avec IE : "Erreur non spécifiée"


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut [AJAX] Message d'erreur avec IE : "Erreur non spécifiée"
    Bonjour

    mon programme fonctionne sans erreur sous Firefox mais génère
    le message d'erreur "Erreur non spécifiée" sur la ligne de test :
    if (xmlHttp.status == 200)

    au niveau de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (xmlHttp.readyState == 3) {
      if (xmlHttp.status == 200) {
    		document.getElementById( 'divMess' ).innerHTML =xmlHttp.responseText;
      }
    }
    comment résoudre ce problème de compatibilité

    merci pour d'avance

    jean-Marie

    ----------------------------------------------------------------------
    pour info je vous donne l'ensemble du programme, l'erreur étant peut-être
    à un autre niveau :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    var xmlHttp;
     
    //
    // fonction d'obtention de l'objet XMLHttpRequest
    //
     
    function getXmlHttpRequestObject()
    {
     // déclaration de la référence à l'objet XMLHttpRequest
     var xmlHttpObject;
     if (window.XMLHttpRequest)
        // le navigateur est Internet Explorer 7 ou plus récent, Mozilla, Safari, etc.
        {
         // on essaie d'obtenir un objet XMLHttpRequest
    	 try {
    	   xmlHttpObject = new XMLHttpRequest();
    	 }
    	 // echec 
    	 catch(e) {
            xmlHttpObject = false;
         }
       }
     else
        // le navigateur est Internet Explorer 6 ou plus ancien
        {
         // on essaie d'obtenir un objet ActiveXObject, équivalent de l'objet XMLHttpRequest
    	 try {
    	   xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
    	 }
    	 // echec 
    	 catch(e) {
            xmlHttpObject = false;
         }
    }
     // retour de l'objet créé ou affichage d'un message
     return xmlHttpObject;
    }
     
     
     
    //
    // fonction de lancement d'une requête HTTP asynchrone Ajax
    //
    function requeteAjax()
    {
     // tentative d'obtention de l'objet XMLHttpRequest
     xmlHttp = getXmlHttpRequestObject();
     
     if (xmlHttp)
        {
    	 // test si l'objet xmlHttp est non initialisé ou disponible (prêt)
    	 if (xmlHttp.readyState == 0 || xmlHttp.readyState == 4)
    	    {
    		 // assignation de la fonction de traitement de la réponse du serveur lorsque le serveur est prêt à envoyer les données mises à jour
    		 xmlHttp.onreadystatechange = traitementReponseServeur;
    		 //  identification du mode de passage, de l'URL du serveur, le dernier paramètre et du type de transmission : true pour asynchrone
    		 var url = "http://localhost/cgi-bin/obs/obshttp_ajax.pl"; 
    		 xmlHttp.open("GET", url, true); 
    		 // envoi de la requête au serveur, paramètre à null si méthode GET ou méthode POST sans variables à transmettre
    		 if(typeof console == 'object') console.log("avant xmlHttp.send");
    		 xmlHttp.send(null);
    		  if(typeof console == 'object') console.log("après xmlHttp.send");
    		}
    		else
    		// rafraîchissement au bout de 100 millisecondes soit un centième de seconde
    		setTimeout("requeteAjax()", 1000);
     
       }
    }
     
     
     
    //
    // fonction de traitement de la réponse du serveur
    //
     
    function traitementReponseServeur()
     
    {
     if (xmlHttp.readyState == 3) {
    	if (xmlHttp.status == 200) {
    		document.getElementById( 'divMess' ).innerHTML =xmlHttp.responseText;
    	}
     }
     
     // test si la transaction est terminée
     
     if (xmlHttp.readyState == 4)
    	{
    	  if(typeof console == 'object') console.log("début traitementReponseServeur : xmlHttp.status = ",xmlHttp.status);
    	 // test si la transaction a réussi
         if (xmlHttp.status == 200)
    	    {
    		  if(typeof console == 'object') console.log("xmlHttp.readyState == 4 && xmlHttp.status == 200");
    		 // relance de la requête 
    	     setTimeout("requeteAjax()", 100);
    		}
    	 else
    	    alert("Problème d'exécution : xmlHttp.status = ",xmlHttp.status);
    }
    }

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    > Pourquoi déclenches-tu le traitement sur un readyState à 3 ? (c'est à "4" que la réponse est complète et exploitable)

    > quand tu testes le status, inclus la possibilité d'un code == 0, ça peut correspondre à un retour OK aussi ^^

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    je déclenche le readState à 3 pour recevoir "en temps réel" les informations
    envoyées par l'exécution du script perl :
    http://localhost/cgi-bin/obs/obshttp_ajax.pl
    celui-ci envoie des messages pendant 30 secondes puis se termine ;
    mais nous ne voulons pas attendre qu'il se termine (readState à 4) pour
    récupérer ces informations

    je prends note pour le code == 0

    mais je ne vois pas le rapport avec l'erreur que j'ai avec IE

    JM

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    je remarque effectivement que si je commente les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // if (xmlHttp.readyState == 3) {
    //	if (xmlHttp.status == 200) {
    //		document.getElementById( 'divMess' ).innerHTML =xmlHttp.responseText;
    //	}
    //}
    et que je passe directement à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (xmlHttp.readyState == 4)
    je n'ai plus l'erreur mais les comportements de Firefox et IE sont différents :

    -dans le cas de Firefox, l'affichage des informations se produit toutes les 30 secondes (puisque le perl se termine au bout de 30 sec)
    -dans le cas de IE l'affichage ne se produit qu'une fois !

    le débugger montre que :
    -côté Firefox, le navigateur est attente de terminaison du script :
    http://localhost/cgi-bin/obs/obshttp_ajax.pl
    à chaque appel de requeteAjax()

    -IE par contre va attendre la terminaison du script la 1ère fois puis boucle
    très rapidement sur la requête :
    http://localhost/cgi-bin/obs/obshttp_ajax.pl
    et ne met plus à jour l'affichage

Discussions similaires

  1. Erreur avec Masterpage 'type non défini'
    Par Stephane_br dans le forum ASP.NET
    Réponses: 0
    Dernier message: 16/10/2013, 14h43
  2. [AJAX] Message d'attente avec Ajax
    Par bronon dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 20/03/2008, 09h03
  3. Réponses: 2
    Dernier message: 14/03/2008, 13h37
  4. Réponses: 2
    Dernier message: 11/02/2007, 13h11
  5. Erreur avec expr : argument non numérique
    Par lastrecrue dans le forum Linux
    Réponses: 5
    Dernier message: 21/05/2006, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo