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

jQuery Discussion :

ajaxstart avec dialog et IE (exemple video inclus)


Sujet :

jQuery

  1. #1
    Membre éclairé Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Par défaut ajaxstart avec dialog et IE (exemple video inclus)
    bonjour,

    J'ai un souci avec Internet Explorer, tout fonctionne sur les autres navigateurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    jQuery(document).ajaxStart(function () {
    $("#DIV_LOADING").dialog({ resizable: false, width: 100, height: 150, draggable: false });
    });
     
    jQuery(document).ajaxStop(function () {
    alert("fermer");
    //$("#DIV_LOADING").dialog("close");
    });
    Lors d'une requête ajax, j'ouvre une popup dialog avec une petite image animée.

    Sous IE, ma popup ne s'affiche qu'au moment ou je passe dans la fonction ajaxStop.. pourquoi ? alors qu'elle devrait s'ouvrir dans l'ajaxStart, comme avec les autres navigateurs....

    Merci d'avance

  2. #2
    Membre éclairé Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Par défaut
    On dirait que le comportement d'internet explorer est différent des autres, et qu'il attend la fin de l'ajax pour afficher la popup. Comme si le javascript n'avait pas d'effet sur l'affichage en direct, mais que tout se fait d'un coup à la fin...

    Je viens de découvrir qu'en mettant une alert classique dans ajaxstart, cela fonctionne bien, alors qu'une popup dialog ne s'affiche pas tout de suite ....

    une idée ?

  3. #3
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Hello,

    ce que tu veux c'est mettre, par exemple, une espèce de loader dans une popup lorsque tu fais une requête AJAX c'est bien ça ?

    Si c'est bien le cas, je vois déjà un très gros problème... Tu instancie à chaque requête une nouvelle popup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //ICI LE PROBLEME
    jQuery(document).ajaxStart(function () {
    $("#DIV_LOADING").dialog({ resizable: false, width: 100, height: 150, draggable: false });
    });
    Donc ce qu'il faudrait que tu fasses c'est plutôt quelque chose dans ce genre la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $(document).ready(
            function(){
                  //Tu instancie ta div
                  $("#DIV_LOADING").dialog({ resizable: false, width: 100, height: 150, draggable: false, autoOpen:false });
                  //ICI TU FAIS TON AJAX START ET AJAX STOP
                  $('#DIV_LOADING').ajaxStart(function(){$(this).dialog('open');});
                  $('#DIV_LOADING').ajaxStop(function(){$(this).dialog('close');});
            }
    );

    J'espère que ça t'aide ?

  4. #4
    Membre éclairé Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Par défaut
    En fait je m'aperçois que le problème ne vient pas de JQuery, mai plutôt du navigateur. Mon truc ne marche que sur Firefox.

    J'ai testé en mettant une simple div avec un background rouge sur toute la page.

    Avec firefox pas de problème, mon site devient tout rouge pendant la requête ajax assez longue. La div apparait dès le début de l'ajax.

    Mais avec les autre navigateurs, on dirait que tout le js est exécuté d'un coup à la fin de l'affichage sur la page, du coup bah ma div rouge n'apparait que si je met un alert à la fin de ma fonction ajaxStart.

    Je vous met un exemple en video:
    http://www.youtube.com/watch?v=ejhAl...ature=youtu.be

    Première recherche sur firefox, la div rouge apparait aus début de l'ajax, puis se retire à la fin.
    Deuxième recherche sur IE, la div n'apparait pas car elle est retiré aussitôt, l js est exécuté tout d'un coup.
    Troisième recherche, avec un alert, la div apparait bien et disparait après.

    code js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    jQuery(document).ajaxStart(function () {
    $("#DIV_CACHE_MOI_TOUT").show();
    //alert("stop");
    });
    jQuery(document).ajaxStop(function () {
    $("#DIV_CACHE_MOI_TOUT").hide();
    });

  5. #5
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Alors ton code fonctionne et devrait bien fonctionner d'après moi.

    Tu pourrais me montrer la requête que tu fais avec JQuery ?

  6. #6
    Membre éclairé Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Par défaut
    ça fonctionne bien mais que su firefox ^^

    J'ai le problème sur toute mes requêtes ajax

    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
     
    function rechercherProduits(action, pagination) {
        if ($('#TXT_PRIX_MIN').val() != "" && $('#TXT_PRIX_MAX').val() != "") {
            if ($('#TXT_PRIX_MIN').val() > $('#TXT_PRIX_MAX').val()) {
                popupAlert(messageTestPrix);
                return;
            }
        }
     
        var str = $("#FRM_RECHERCHE").serialize();
        pageActuelle = pagination;
        $("#DIV_LISTE_PROD").empty();
        // Utilisation du framework JQuery pour l'ajax
        $.ajax({
            async: false,
            type: "POST",
            dataType: "html",
            url: "/Boutique/ListeProduits",
            data: str + "&action=" + action + "&pagination=" + pagination,
            success: function (data) {
                $("#DIV_LISTE_PROD").empty();
                $("#DIV_LISTE_PROD").append(data);
            },
            error: function (request) {
                document.location.href = "/Erreurs";
            }
        });
    }

  7. #7
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    A mon avis ton traitement est trop "rapide" pour IE (donc la requête), et de ce fait IE l'affiche et masque droit derrière ta div en rouge.

    Pour tester si c'est bien ça tu fais juste un alert après ton .append dans ta requête, comme suite :

    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
     
    $.ajax({
            async: false,
            type: "POST",
            dataType: "html",
            url: "/Boutique/ListeProduits",
            data: str + "&action=" + action + "&pagination=" + pagination,
            success: function (data) {
                $("#DIV_LISTE_PROD").empty();
                $("#DIV_LISTE_PROD").append(data);
                alert('x');
            },
            error: function (request) {
                document.location.href = "/Erreurs";
            }
        });
    Redis moi ce qui se passe après ça ^^

  8. #8
    Membre éclairé Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Par défaut
    Cela ne change rien, cela fonctionne toujours pareil, la div apparait à la fin de l'ajax et non à son lancement ...

  9. #9
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Ecoutes je ne vois pas vraiment la raison du dysfonctionnement...

    Tu es sûr d'avoir mis le code ajaxStart et ajaxStop dans le document ready ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $(document).ready(
            function(){
                  $('#DIV_LOADING').ajaxStart(function(){$(this).dialog('open');});
                  $('#DIV_LOADING').ajaxStop(function(){$(this).dialog('close');});
            }
    );
    As-tu exactement la même chose ?

    Ensuite, es-ce que tu as définit une width ET une height à ta DIV ?

  10. #10
    Membre éclairé Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Par défaut
    TROUVEEEEEEEEEEEEEEE !!!!

    J'ai changé l'option de l'appel ajax async:true, ce qui est logique.

    ça marche !

    Des heures de galère résolues.

    Merci pour le coup de main.

  11. #11
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Arf me suis pas rendus compte du async:false,

    C'est sûr que si tu fais AjaxStart et AjaxStop c'est censé être de l'AJAX, XD pas une requête javascript synchrone XD

    Bien joué en tout cas

    A bientôt

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

Discussions similaires

  1. Fuites mémoire avec valgrind sur un exemple simple
    Par Kazujoshi dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 03/11/2010, 01h56
  2. Scroll bar avec Dialog
    Par mercure07 dans le forum jQuery
    Réponses: 2
    Dernier message: 20/10/2009, 12h19
  3. Problèmes avec Dialog
    Par m.klaury dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 28/09/2009, 11h13
  4. Réponses: 1
    Dernier message: 01/02/2008, 09h06
  5. [Swing] bug avec Dialog
    Par shinkyo dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 01/03/2006, 14h29

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