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 :

[AJAX] Compatibilité IE / FF pour ajax ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut [AJAX] Compatibilité IE / FF pour ajax ?
    Bonjour.

    J'ai un petit site internet avec les pages comme suit :
    - une div de titre qui contient le titre du site et le menu (id 'menu').
    - en dessous les pages qui changent en fonction des clics sur le menu (id 'body').

    J'utilise de l'ajax pour me faire la main.

    Sous Firefox tout fonctionne bien.
    Sous IE rien ne fonctionne (pas d'affichage des pages demandées), mais une erreur : "[...] a la valeur Null ou n'est pas un objet".

    J'ai essayé de trouver des réponses simples et claires sur internet, mais rien de passionnant...

    Ma page index.php (simplifiée):

    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
    <html>
        <head>
            <!-- balises de forme -->
            <title>qFreeFax - Le fax gratuit et flexible pour les abonnés de Free</title>
            <link rel="stylesheet" type="text/css" href="index.css">
     
            <!-- fonctions javascript générales -->
            <script src="fonctions.js" type="text/javascript" LANGUAGE="JavaScript"></script>
        </head>
     
        <body onload="appelAjax('accueil')">
            <div id="menu">
                <a onclick="appelAjax('accueil')">accueil</a>
            </div>
            <div id="body">
            </div>
        </body>
     
    </html>
    Ma page de fonctions javascript (simplifiée) :

    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
          var objRequete = new XMLHttpRequest();	// instanciation d'un objet XMLHttpRequest
     
    		function appelAjax(newPage) 
           {
    			// fonction appelée. param non utilisée ici
    			//var ma_variable=document.getElementById("...").value;
     
              objRequete.open('get','traitNav.php?request='+newPage,true);	//ouverture d'une requete XMLHttpRequest avec paramètres methode get, mode asynchrone (true)
    			objRequete.onreadystatechange = reponseAjax;		// nom de la fonction qui traite la reponse de l'accès précédent
    			objRequete.send(null);									// envoie de la requete
     
                return true; // la fonction retourne vrai (sans incidence ici - syntaxiquement correct)
            }
     
     
            function reponseAjax() 
            {
    		    if (objRequete.readyState==4) // 4: transaction terminée avec données chargées
               { 
    				document.getElementById("body").innerHTML = objRequete.responseText; // modif du DOM
                }
            }
    La page de traitement de la navigation (avec vérification de l'existence des fichiers etc...) n'est pas interessante dans ce cas.

    Merci de vos réponses, il faut que ce site soit compatible FF et IE.
    C'est cette méthode que je veux utiliser, pas une autre, car je ne peux pas rafraichir tout à chaque changement de page.

    Guillaume

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    sauf erreurs de ma part, la syntaxe est correcte.

    Peut-être qu'IE trouve déplacé d'appeler un div "body" (la paille et la poutre, quoi )

    Essaye de l'appeler autrement ("corps", "le_body" ...)

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut Pas de problème de nom pour le 'body'
    J'ai changé le body, qui effectivement aurait pu provoquer un caprice de la part de IE.
    Mais j'ai toujours mon erreur.

    Il doit s'agir d'autre chose.

    Guillaume

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par crepeOsucre
    Il doit s'agir d'autre chose.
    Que contient (au sens "chaine de caractères") ton objRequete.responseText au retour ?

    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut
    Voici le code ma page php qui traite les évènements de navigation :

    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
     
    <?php
     
    //##############################################//
    // Cette page récupère le paramètre d'url       //
    // contenant la page demandée, et la transmet.  //
    // D'autres paramètres peuvent bien sur être    //
    // transmis dans l'URL comme la version de      //
    // l'os etc...                                  //
    //##############################################//
     
    if (isset($_REQUEST["request"]))
    {
        $newPage = $_REQUEST["request"];
        $newPage = ($newPage.".html");
        if (file_exists("./".$newPage))
        {
            include($newPage);
        }
        else
        {
            echo("La page demand&eacute;e n'existe pas");
        }
    }
    else
    {
        echo("Une erreur est survenue");
    }
     
    ?>
    Si tout se passe bien, un include de la page demandée est retourné.
    J'avoue que j'ai été surpris que constater que cela fonctionnait (sous FF) quand je l'ai écrit... Est-ce correct ?

    Sinon, une simple chaine (message d'erreur) est retournée.

    Guillaume

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Heu ... oui mais justement, au-delà du fait que PHP n'est pas ma langue maternelle, ce qui compte pour le nav, c'est le code qu'il reçoit.
    Le code finale généré par le serveur, quoi ...
    Si tu fais un alert(objRequete.responseText), ça affiche quoi ?

    A+

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

Discussions similaires

  1. [DOM] [form] [ajax]compatibilité entre formulaire et ajax
    Par globz dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/09/2008, 15h30
  2. [AJAX] framework pour ajax
    Par gloglo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/03/2007, 13h07
  3. [AJAX] compatibilité restreinte
    Par cyrill.gremaud dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 17/11/2006, 10h21
  4. [AJAX] besoin d'aide pour xmlhttprequest
    Par argon dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 30/06/2006, 17h55
  5. [AJAX] Longeur url pour AJAX
    Par FremyCompany dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/03/2006, 14h38

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