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

JavaScript Discussion :

Problème au niveau de IE ! [Fait]


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut Problème au niveau de IE !
    Bonjour à tous!

    J'ai besoin d'afficher une donnée qui peut se varier (et stockée dans une base de données) dans une page web sans actualiser la page.

    Voilà le code source de la page index.asp:
    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
     
    <html>
    <head>
    <title>Test AJAX</title>
     
    <script type="text/javascript">
     
     
    function writediv(texte)
    {
    document.getElementById('zonetraitement').innerHTML = texte;
    }
    //============================
     
    function verificationMenu()
    {
    texte = file('BDAjax.asp')
    writediv(texte);
    setTimeout("verificationMenu()",1000);
    }
    //============================
     
    function file(fichier)
    {
    if(window.XMLHttpRequest) // FIREFOX
    xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) // IE
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else
    return(false);
    xhr_object.open("GET", fichier, false);
    xhr_object.send(null);
    if(xhr_object.readyState == 4) return(xhr_object.responseText);
    else return(false);
    }
    </script>
     
    </head>
    <body onLoad=verificationMenu();>
    <form name="formmenu" action="" methode="GET" onSubmit="">
    <div id="zonetraitement"></div>
    </form>
     
    </body>
    </html>
    La page BDAjax.asp retourne cette valeur par: response.Write()


    ça marche trés bien sous Firefox mais ça marche pas sous IE !!

    Pourquoi?

    Et merci d'avance.

  2. #2
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    J'ai déja repondu au mêmes problemes

    http://www.developpez.net/forums/sho...d.php?t=288073

    Je te copie colle ma reponse :

    Desolé mais ton code à quasiment aucune chance de fonctionner.
    Il est tres peu probable que ton requester est deja terminer sa requête.

    Essaie de mettre une fonction de traitement sur les etats de ton object

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.onreadystatechange=tafonctiondetraitement

  3. #3
    Membre averti
    Homme Profil pro
    Tech Lead magento
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Tech Lead magento
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    Bonjour,
    j'ai exactement le même problème avec IE.
    Mais je ne vois pas ou mettre ta fonction ?
    Pourrais tu m'expliquer ? je début en AJAX et j'avoue que IE m'embête...

    Voici ce que je supose que tu apelle le requester
    Merci d'avance ça me débloquerais beaucoup...
    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
     
    function file(fichier)
    		{
    			if(window.XMLHttpRequest)
    			xhr_object = new XMLHttpRequest();
    			else if(window.ActiveXObject)
    			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    			else
    			return(false);
    			xhr_object.open("GET", fichier, false);
    			xhr_object.send(null);
    			xhr_object.onreadystatechange=file(fichier)
    			if(xhr_object.readyState == 4) return(xhr_object.responseText);
    			else return(false);
    		}

  4. #4
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    J'ai remplacé ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    xhr_object.send(null);
    if(xhr_object.readyState == 4) return(xhr_object.responseText);
    else return(false);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    xhr_object.send(null);
    xhr_object.onreadystatechange = function() {
    	if(xhr_object.readyState == 4) return(xhr_object.responseText);
    	else return(false);
    }
    Mais le résultat obtenu est: undefined pour Firefox et IE !!!

    Comment résoudre ce problème et merci.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 114
    Par défaut
    et ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(xhr.readyState == 4 && xhr.status == 200)
    ?

  6. #6
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Toutes les explications sont la :

    http://siddh.developpez.com/articles/ajax/#LII

    Ton code de depart est conceptuellement faux sous IE et FF,
    ton code peut fonctionner parfois pas plus.
    Desolé, bonne lecture sur le tutorial

    Je t indique quand meme ou ça va pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xhr_object.open("GET", fichier, false);
    			xhr_object.send(null);
    			xhr_object.onreadystatechange=file(fichier)
    Il faut mettre la fonction de traitement avant sinon il se peut que le reponse disparraisse dans la nature :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    xhr_object.onreadystatechange=file(fichier)
    xhr_object.open("GET", fichier, false);
    			xhr_object.send(null);

  7. #7
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    J'ai appliqué l'exemple du tutoriel comme il est:

    http://siddh.developpez.com/articles/ajax/#LII

    ça marche sous Firefox et ça marche pas avec IE (même si j'actualise la page--->il faut ouvrir une nouvelle fenêtre et retaper l'adresse pour prendre les modifications)!!!

    OOOOHH, je suis fatigué !

  8. #8
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    As tu installe le debugger de script de microsoft.
    Si non je te recommande de le faire (même si ça resoud pas ton probleme actuel).


    Quel est le probleme plus exactement ?

    Tu peux copier coller toute ta page de test ? pour voir ?

  9. #9
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    la page index.html:
    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
     
    <html>
    	<head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<script type='text/JavaScript'>
     
    	 		function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				var xhr = getXhr()
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						alert(xhr.responseText);
    					}
    				}
    				xhr.open("GET","ajax.php",true);
    				xhr.send(null);
    			}
    		</script>
    	</head>
    	<body>
    		<input type='button' value='Dis quelque chose !' onclick='go()' />
    	</body>
    </html>
    La 2eme page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
            echo "Bonjour de php";
    ?>

  10. #10
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    ça me semble ok dans la theorie,

    essaie d'afficher les differentes readystate.

    Tu as quoi comme erreur tres exactement

  11. #11
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    Le probleme c'est que si je modifie le message de la page ajax.php (Bonjour de php) puis je clique sur le bouton qui déclenche le message en alert, alors le message se modifie sous Firfox sans actualiser la page alors pour IE ça marche pas!

    Pour les differentes readystate, c'est bon:
    j'ai ajouté alert(xhr.readyState); dans le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					alert(xhr.readyState);
    					if(xhr.readyState == 4 && xhr.status == 200){
    						alert(xhr.responseText);
    					}
    				}
    il donne 1 puis 2 puis 3 puis 4 et finalement le message modifié en Firefox
    &
    il donne 1 puis 2 puis 3 puis 4 et finalement l'ancien message IE !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [UBUNTU] Problème au niveau du partitionnement
    Par Louis-Guillaume Morand dans le forum Ubuntu
    Réponses: 19
    Dernier message: 19/07/2006, 18h05
  2. [CSS] Problème au niveau de la résolution
    Par shukin dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 28/10/2005, 13h29
  3. [PPC][C#][SQL2000] Problème au niveau de donné controlé
    Par Roach dans le forum Windows Forms
    Réponses: 16
    Dernier message: 21/09/2005, 22h08
  4. problème au niveau de restore database
    Par Redouane dans le forum Administration
    Réponses: 2
    Dernier message: 07/09/2005, 11h49
  5. [DNS MX]Avec DynDNS.org, problème au niveau du MX
    Par Swoög dans le forum Développement
    Réponses: 9
    Dernier message: 24/08/2004, 22h00

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