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] [XMLHttp][IE]Fonction qui ne fonctionne qu'une seule fois


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Points : 160
    Points
    160
    Par défaut [AJAX] [XMLHttp][IE]Fonction qui ne fonctionne qu'une seule fois
    Bonjour

    Alors, dans la série IE me fait des trucs plus qu'incompréhensible voici un nouvel épisode...

    Avant tout, je tiens a préciser que tout fonctionne nickel chrome sous FF et consorts


    Alors voila le topo :
    J'ai un site multilangue utilisant pas mal la technologie dite "ajax", avec un menu en flash qui lance des fonctions javascript qui rafraichissent des morceaux de page.

    En haut a droite, j'ai les liens de changement de langue comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <a href="javascript:void(0);" onclick="changeLang('nl');" class="langlink">NL</a>
    	<a href="javascript:void(0);" onclick="changeLang('fr');" class="langlink">FR</a>
    	<a href="javascript:void(0);" onclick="changeLang('en');" class="langlink">EN</a>
    Jusque la je pense qu'il n'y a pas de soucis...

    Ma fonction changeLang est celle-ci :
    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
     
    function changeLang(lang)
    {
      var mypage=NewAjax();
      var myurl="changelang.do.php?lang="+lang;
      mypage.open("GET", myurl);
      mypage.onreadystatechange = function() {
        if (mypage.readyState == 4 && mypage.status == 200)
        {
          clickMenu(currentPage);
     
          //rappel menu
          var mymenu=NewAjax();
          mymenu.open("GET", "menu.php");
          mymenu.onreadystatechange = function() {
            if (mymenu.readyState == 4 && mymenu.status == 200)
            {
              $('rappelmenu').innerHTML=mymenu.responseText;
            }
          }
          mymenu.send(null);
     
        }
      }
      mypage.send(null);
    }
    Sachant que NewAjax() me renvoye simplement un objet xmlhttp (ouais je sais pas terrible comme nom de fonction)

    Le script appelle donc une page "changelang.do.php" qui s'occupe simplement de changer la variable de session php de langue.

    Une fois cete langue changée, il lance clickMenu(currentPage) cela a pour effet de recharger la page que l'on visite (le bout de page plutot), cela change de langue grace a la variable de session modifiée juste avant

    Enfin, une derniere requete est faite vers la page "menu.php" pour mettre a jour le rappel du menu de bas de page (le menu étant en flash, je voulais ce rappel au cas ou qqun n'a pas flash )


    Tout ca fonctionne à merveille sous FF and co, sous internet explorer c'est autre chose... et je ne capte vraiment pas

    En fait sous IE, tout se passe bien, mais seulement la premiere fois que l'on click sur une langue... Je veux dire par la, on peut passer du FR au NL, puis du NL au EN, puis meme du EN au FR ensuite si on veut, mais le lien ne fonctionne que la premiere fois qu'il est cliqué !

    J'ai peur de mal me faire comprendre alors j'insiste, cela marche UNE FOIS PAR LIEN...

    Le pire, encore, la fonction est bien lancée quand meme ! (j'ai testé avec des alert()) Encore mieux, les requetes se passent sans encombre, la réponse est bien recue, on dirait simplement que les 2 "innerHTML" ne veulent plus fonctionner...

    Enfin, j'y comprends quedalle...

    Dernière chose, une fois les liens "bloqués" (bref quand on a cliqué une fois dessus), le refresh n'y changera rien ! rien de tout ca ne refonctionne tant qu'on a pas coupé et relancé IE ! C'est quoi cette folie sérieux ?

    Merci d'avance pour vos éclaircissements...


    ps: $('rappelmenu') est un raccourci pour document.getElementById('rappelmenu') avec la librairie js prototype.
    ps2: désolé d'avoir fait si long...
    xbox: ok elle est nulle celle la, je sors...

  2. #2
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Bonsoir,
    des pistes en vrac ...
    - un problème de variable de session,
    - un problème de cache ?
    et si tu appelles ta page php avec un paramètre qui ne sert à rien mais de type dateheure, manière de l'obliger à "rafraîchir" ?

    --
    Cordialement
    Christophe Charron
    Cordialement,
    Christophe Charron

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Points : 160
    Points
    160
    Par défaut
    Salut, merci de ta répone je me sentais bien seul...

    Citation Envoyé par Christophe Charron
    - un problème de variable de session
    C'est ma seule variable de session. Si le script php (qui est le meme quel que soit la langue choisie) fonctionne une fois pour chaque langue, j'ai du mal a comprendre pourquoi il ne fonctionnerait pas ensuite...
    De toutes facons, après tests, le problème ne vient pas de ce coté :'(

    Citation Envoyé par Christophe Charron
    - un problème de cache ?
    Le cache pose problème sur un innerHTML ? Pourquoi cela fonctionnerait les premières fois alors ? juste la premiere fois je comprendrai encore, mais une fois sur chaque lien j'ai du mal :'(


    Citation Envoyé par Christophe Charron
    et si tu appelles ta page php avec un paramètre qui ne sert à rien mais de type dateheure, manière de l'obliger à "rafraîchir" ?
    Euh bah en fait un des buts principaux de l'Ajax c'est de pas rehcarger de page mais injecter des bouts de pages, par injection DOM ou innerHTML


    Bref c'était bien sympa de ta part, mais je pense que ca va pas m'aider :'(

    Merci à toi d'avoir pris le temsp de t'arretter, les autres ont l'air de survoler ce coup ci :p

  4. #4
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    et t'a essayé en remplacant le innerHTML par du DOM?

    eout etre que c'est a ce niveau là?

    vu que la reponse est recu... je ne voit pas d'autre explication...

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:void(0);" onclick="changeLang('nl');return false; " class="langlink">NL</a>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Points : 160
    Points
    160
    Par défaut
    Merci Spacefrog j'essayerai ca, j'ai pas le code sous la min et il semble fonctionner maintenant pour je ne sais quelle raison... :/


    Par contre hansa, passer par du DOM sur ce coup la ca va etre chaud, mon script php qui écrit la page incluse fait 54ko avec une bonne dose de HTML :p
    Alors en DOM c'est un peu un boulot de fourmi

    Merci de vos réponses les gars

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Je sais que ce sujet date de Mars 2006, mais ayant une réponse à ce problème, je post. Ca pourra sans doute aider.

    Pour ma part, j'ai eu le meme problème problème que toi. il s'avere que le problème vient de la méthode utilisée (GET). Pour pallier, il suffit de mettre la méthode à POST, et cela fonctionne sous IE comme FF

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    Merci Alex

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

Discussions similaires

  1. requete sql qui ne fonctionne qu'une seule fois
    Par brice97431 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 30/07/2012, 15h11
  2. [XL-2010] Fonction qui ne marche qu'une seule fois
    Par haydens dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/07/2012, 10h04
  3. [JSTL] foreach qui ne fonctionne qu'une seule fois
    Par Ouguiya dans le forum Taglibs
    Réponses: 16
    Dernier message: 02/08/2007, 16h17
  4. Réponses: 6
    Dernier message: 13/07/2007, 11h46
  5. fonction qui s'exécute qu'une seule fois sous Firefox
    Par la.sophe dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/03/2006, 10h02

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