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 :

XMLHTTP : réponse serveur


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Par défaut XMLHTTP : réponse serveur
    Cela fait deux jours que je bloque sur mon code et pourtant je ne vois rien qui cloche...
    Le problème qui me surprend le plus, c'est que sous Firefox, le serveur ne répond jamais à ma requête (readyState ne passe jamais à 3) alors que sous IE la réponse passe sans problèmes... Alors que sous IE, je n'arrive pas à accéder au contenu de mes div
    Ma version d'IE est la 7 et j'ai Firefox 2.0.0.6

    Voici tout d'abord Mon code javascript :
    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
    function getElement(rid) {
             return document.getElementById ? document.getElementById(rid) : document.all(rid) ;
    }
    function getXmlHTTP () {
             var xmlhttp = false;
    	/* Compilation conditionnelle d'IE */
     
    	/*@cc_on
     
        @if (@_jscript_version >= 5)
    		try {
    			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP") ;
    		}
    		catch (e) {
    			try {
    				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") ;
    			}
    			catch (E) {
    				xmlhttp = false ;
    			}
    		}
    	@else
    		xmlhttp = false ;
    	@end @*/
     
    	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    		try {
    			xmlhttp = new XMLHttpRequest();
    		}
    		catch (e) {
    			xmlhttp = false;
    		}
    	}
    	return xmlhttp;
    }
    function remplis_div(doc,texte) {
             elem2w = getElement('cadre_cible') ;
             /*test = doc.createElement('a') ;
             test.href = 'index.php' ;
             test.textContent = texte ;
             elem2w.appendChild(test) ;*/
             alert(elem2w.textContent) ;
    }
    function gere_click_lien(id_element) {
             xmlhttp = getXmlHTTP() ;
             if (!xmlhttp) { return ; }
                xmlhttp.open("GET", "operations.php?operation=lien&cible="+escape(id_element) ,true) ;
                xmlhttp.onreadystatechange = function() {
                   if (xmlhttp.readyState == 4) {
                      alert("Code html : "+xmlhttp.status) ;
                      remplis_div(document,xmlhttp.responseText) ;
                   }
                }
             xmlhttp.send(null);
    }
    Et maintenant la page html (générée par php) sur laquelle s'applique le script :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <meta name="author" content="tsukaniki" />
    <meta name="robots" content="none" />
    <meta name="refresh" content="900" />
    <meta http-equiv="Content-language" content="fr" />
    <title>Base de donnée des DVDs</title>
    <style type="text/css" title="default">
           div.menu_elt {
                 display:inline;
                 padding:0 5px;
                 margin:0 5px;
                 border:0;
           }
    </style>
    <script type="text/javascript" language="JavaScript1.5" src="scripts.js" charset="ISO-8859-1"></script>
    </head>
    <body>
    <div id="grand_cadre">
     
         <div id="menu">
         <div class="menu_elt"><a href="index.php" id="lien_addfilm" onclick="gere_click_lien('lien_addfilm');">Ajout de film</a></div><div class="menu_elt"><a href="index.php" id="lien_rechrap" onclick="gere_click_lien('lien_rechrap');">Recherche rapide</a></div><div class="menu_elt"><a href="index.php" id="lien_rechav" onclick="gere_click_lien('lien_rechav');">Recherche avancée</a></div><div class="menu_elt"><a href="index.php" id="lien_geneliste" onclick="gere_click_lien('lien_geneliste');">Génération de liste</a></div><div class="menu_elt"><a href="index.php" id="lien_gestprets" onclick="gere_click_lien('lien_gestprets');">Gestion des prêts</a></div><div class="menu_elt"><a href="index.php" id="lien_autresope" onclick="gere_click_lien('lien_autresope');">Autres opérations</a></div>     </div>
     
    <div id="cadre_cible"> bla bla bla bla bla et bla</div>
    <div id="infos"> </div>
     
    </div>
    </body>
    </html>
    Pour ce qui est du contenu du fichier operations.php, le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
         header('Content-Type: text/html; charset=ISO-8859-1') ;
         echo 'bla bla' ;
    ?>
    Il contenait beaucoup plus de code avant, mais je l'ai simplifié pour essayer de trouver l'erreur. Je n'ai pas de réponse avec Firefox que j'ai mis ou non header()...

    Quelqu'un a-t-il une idée sur pourquoi je n'ai pas de réponse du serveur sous firefox et pourquoi sous IE textContent me retourne undefined ?

    Merci d'avance

    PS : Petite précision, les tests sont fait en local sur ma machine avec EasyPhp (la dernière version en date).

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Par défaut
    J'ai -en partie- résolu le problème en virant les tests avec xmlhttp.status...
    J'ai eu vent d'un problème sous firefox si on tente d'accèder à cette valeur avant que readyState valle 4... Sauf que dans mon cas, même si toute la réponse à été envoyée, la tentative de lecture de xmlhttp.status me fait planter le script sous firefox (il faut noter qu'IE me donne bien 200 comme valeur... je comprend plus rien). De plus, firefox ne me renvoi rien comme texte (ce qui me laisse penser qu'il y a une erreur et que donc, pour lui, status ne vaut pas 200) tandis qu'IE me donne bien le texte...

    Si quelqu'un à une idée sur la source du problèle... je suis prenneur, merci

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Par défaut
    Personne n'a une idée ?
    Je précise (parce que c'est tout de même remarquable) que ce script javascript est déjà utilisé dans un autre de mes sites et qu'il fonctionne parfaitement... Enfin, la partie déjà utilisée est la suivante :
    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
    xmlhttp = getXmlHTTP() ;
     
                if (!xmlhttp) { return ; }
     
                xmlhttp.open("GET", "gp_recherche.php?mode=rapide&cible=groupe&cle="+transcritURL(mon_texte),true);
     
                xmlhttp.onreadystatechange = function() {
     
                   if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
     
                      renvoi_donnee_groupe(doc,xmlhttp.responseText) ;
     
                   }
     
                }
     
                xmlhttp.send(null);
    Suis-je vraiment le seul a avoir ce problème ?

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Par défaut
    Cela fait un peu lourd 4 réponses de la même personne, mais je viens de trouver d'où venait le problème...
    Il venait tout simplement des liens !
    Apparemment, cela pose un problème à firefox si le lien contient une vrai page (IE s'en fiche et le script javascript s'exécute correctement).
    En remplaçant les <a> par des <span> ou en remplaçant les href="index.php" par des href="javascript:fonctionjs()" tout rentre dans l'ordre...

    Je m'excuse d'avoir dérangé certaines personnes pour un problème qui ressemble plus à une boutade dans le code qu'a un réel problème... J'espère néanmoins que ce topic pourra servir à d'autres.

    Merci de votre attention en tout cas

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 07/07/2008, 09h21
  2. Pas de réponse serveur IHS
    Par RicFT dans le forum Apache
    Réponses: 3
    Dernier message: 05/12/2007, 14h09
  3. [TCP IP] Demande-réponse serveur
    Par klimasDavid dans le forum Web & réseau
    Réponses: 2
    Dernier message: 19/11/2007, 21h47
  4. [AJAX] AJAX et gestion des réponses serveur
    Par eolis dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/09/2007, 17h04
  5. [XML] [XML-RPC] retrouver les infos d'une réponse serveur
    Par arnolem dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/08/2006, 12h07

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