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] Pb avec mutli requete synchrone (FF)


Sujet :

JavaScript

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut [AJAX] Pb avec mutli requete synchrone (FF)
    Bonsoir,

    J'ai un petit probléme avec des requetes synchrone. Je met a jour successivement le contenu de different <div> par l'intermediaire de requete synchrone. Sur Opera et IE7 ca marche sans soucis tandis que FireFox ne marche pas. Je vous montre le code pour y voir plus clair. Je créer un objet JS qui va me permettre de dialoguer avec le server et je demande juste au server de me print le contenu que je lui demande.

    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
    56
     
    var AjaxEngine =  {
     
        Request : getXHR(),
        Host : "include/sEngine.php",
        Method : "POST",
        Async : false
    }
     
    AjaxEngine.Send = function(Container,
                               Content) {
     
     
        AjaxEngine.Request.onreadystatechange = function() {
     
            if(AjaxEngine.Request.readyState == 4 && AjaxEngine.Request.status == 200) {
     
                GetElementById(Container).innerHTML = AjaxEngine.Request.responseText;
                AjaxEngine.Request.abort();                              
        	}
        }
     
        AjaxEngine.Request.open(AjaxEngine.Method, AjaxEngine.Host, AjaxEngine.Async);
    	AjaxEngine.Request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-1;");
        AjaxEngine.Request.send("content=" + Content);
    }
     
     
    function getXHR() {
     
        if(window.XMLHttpRequest && !(window.ActiveXObject)) {
     
            try {
                return new XMLHttpRequest();
            } catch(e) {
                return false;
            }
        }
        else if(window.ActiveXObject) {
     
            try {
                return new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
     
                try {
                    return new ActiveXObject("Microsoft.XMLHTTP");
                } catch(e) {
                    return false;
                }
            }
        }
        else {
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
            return false;
    	}
    }
    Code PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
     
        header('Content-Type: text/html; charset=iso-8859-1');
     
        $contentDir = $_POST['content'];
              
        include("actions/".$contentDir.".php");
        
    ?>
    Appel pour Update les <div> (dans le body)

    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
     
            <div id="menu">
     
                <script type="text/javascript">
     
                    AjaxEngine.Send('menu','menu/menuGames');
     
                </script>
     
            </div>
     
            <div id="content">
     
                <script type="text/javascript">
     
                    AjaxEngine.Send('content','content/accueil');
     
                </script>
     
            </div>
    Sous Firefox je ne rentre jamais dans le onreadystatechange.

    Merci de votre aide.

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Par défaut
    Je suis pas sur que ça va résoudre ton problème mais je me souviens vaguement d'un truc...

    En gros sous FF quand tu es en mode synchrone, dans mes souvenirs, onreadystatechange est pas appelée.

    Essais de faire un truc de ce style (sans t'occuper du onreadystatechange):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    // ...
     
    AjaxEngine.Request.send("content=" + Content);
     
    if(AjaxEngine.Request.readyState == 4 && AjaxEngine.Request.status == 200) {
     
    // ...
     
    }
    Je te promets rien ! :o

Discussions similaires

  1. [AJAX] Modal popup avec contenu requete ajax et PHP !
    Par legall dans le forum jQuery
    Réponses: 14
    Dernier message: 14/11/2013, 16h12
  2. [AJAX] Requete Ajax
    Par aztec dans le forum AJAX
    Réponses: 0
    Dernier message: 16/10/2010, 17h00
  3. [AJAX] AJAX : mutli requete
    Par Emcy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/04/2007, 10h38
  4. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  5. problemes de performances avec les requetes select
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/07/2003, 13h39

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