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

Mobiles Discussion :

Cordova - Jquery Mobile - Rafraîchir une page après ajouts d'éléments


Sujet :

Mobiles

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2014
    Messages : 21
    Points : 18
    Points
    18
    Par défaut Cordova - Jquery Mobile - Rafraîchir une page après ajouts d'éléments
    Bonjour à tous.

    Je boss sur un application mobile, faite en Jquery Mobile, qui sera compiler via Cordova.

    Je vous explique mon problème :
    J'ai une page affichant une liste de "groupes" (j'utilise pour cela une "listview"), cette liste est remplie grâce à un appel AJAX sur un serveur relié à une BDD.

    Depuis cette même page je peux accéder à un autre onglet permettant de créer un nouveau groupe. Quand je crée un nouveau groupe et que je valide (bouton de type submit), cela me ramène sur la page affichant les groupes via la liste.
    MAIS le nouveau groupe récemment créé n'apparait pas dans la liste. En fait, l'appel ajax n'est même pas fait de nouveau, on dirait que cela revient juste à la page d'affichage mais sans REfaire toutes les instructions.

    Si je rafraîchis la page à la main (actualiser sou mon navigateur), la page se recharge bien et ma liste est alors à jour.
    Donc je dois mal faire quelque chose...

    Voilà le code HTML de mes deux pages (c'est une application faite en OnePage) :
    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
    <!-- PAGE AFFICHAGE GROUPE -->
        <div data-role="page" id="pageAffichageGroupe" data-dom-cache="true" data-theme="a">
            <div data-role="header" data-theme="b">
                <div data-role="navbar" data-theme="a">
                    <ul>
                        <li><a href="#pageAffichageGroupe" data-icon="home" class="ui-btn-active ui-state-persist">Home</a></li>
                        <li><a href="#pageCreerGroupe" data-icon="plus" data-transition="slidefade">Nouveau Groupe</a></li>
                    </ul>
                </div>
            </div>
      
            <div data-role="content">
                <h2>Page Affichage des groupes</h2>
                <h3 id="user"></h3>
                <ul data-role="listview" id="listGroup" data-autodividers="true" data-filter="true" data-inset="true"></ul>
            </div>
            
            <div data-role="footer" data-theme="b" data-position="fixed" class="center-footer">
                <div>Pied de Page</div>
            </div>
        </div>
        
        <!-- PAGE CREER GROUPE -->
        <div data-role="page" id="pageCreerGroupe" data-theme="a">
            <div data-role="header" data-theme="b">
                <div data-role="navbar" data-theme="a">
                    <ul>
                        <li><a href="#pageAffichageGroupe" data-icon="home" data-transition="slide" data-direction="reverse">Home</a></li>
                        <li><a href="#pageCreerGroupe" data-icon="plus" class="ui-btn-active ui-state-persist">Nouveau Groupe</a></li>
                    </ul>
                </div>
            </div>
      
            <div data-role="content">
                <h3>Page Création de Groupe</h3>
                <form data-ajax="false">
                    <fieldset>
                        <div class="ui-field-contain">
                            <label for="newGroup">Enter a Group Name :</label>
                            <input type="text" data-clear-btn="true" value="" name="newGroup" id="newGroup"/>
                        </div>                                 
                        <div class="ui-field-contain">                                     
                            <label for="descGroupe">Description du Groupe :</label>
                            <textarea name="textarea" id="descGroup"></textarea>                        
                        </div>
                        <input type="button" name="submit" id="submitNewGroup" value="Submit" data-theme="b">
                    </fieldset>
                </form>
            </div>
            
            <div data-role="footer" data-theme="b" data-position="fixed" class="center-footer">
                <div>Pied de Page</div>
            </div>
        </div>
    Et là le code JQUERY permettant les appels ajax et le changement de page :
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    // PAGE AFFICHAGE GROUPE
    $(document).on('pagecreate', '#pageAffichageGroupe', function(){
        $("#user").append('Welcome ' + $('#loginConnexion').val());
        $.ajax({url: 'http://localhost/XXXXXXXX',
                        data: {'action' : 'SelectGroupes' , 'MODAL' : sessionStorage['session_id']},
                        type: 'get',
                        async: 'true',
                        dataType: 'json',
                        beforeSend: function() {
                            $.mobile.loading('show', {theme:"a", text:"Please wait...", textonly:true, textVisible: true});
                        },
                        complete: function() {
                            $.mobile.loading('hide');
                        },
                        success: function (result) {
                            if(result.success) {
                                if(result.groupes.length === 0) {
                                    alert("Pas de groupes");
                                }
                                else {
                                    for(i=0; i<result.groupes.length; i++) {
                                        nomGroupe = result.groupes[i].nom;
                                        $('#listGroup').append('<li><a href=\"#pageGallery\" data-transition=\"flip\">'+result.groupes[i].nom+'</a></li>');
                                    }
                                    $('#listGroup').listview('refresh');
                                }
                            } else {
                                alert('Erreur lors de l\'affichage des groupes ' + result.status);
                            }
                        },
                        error: function (request,error) {        
                            alert('error SelectGroupe : ' + error + ' request SelectGroupe : ' + request);
                        }
        });
    });
    
    // PAGE CREATION GROUPE
    $(document).on('pagecreate', '#pageCreerGroupe', function(){
        $(document).on('tap', '#submitNewGroup', function() {
            if($('#newGroup').val().length > 0 && $('#descGroup').val().length > 0){
                $.ajax({url: 'http://localhost/XXXXXXXX',
                    data: {'action' : 'CreationGroupe', 'nom': $('#newGroup').val(), 'description':$('#descGroup').val(), 'MODAL' : sessionStorage['session_id']},
                    type: 'get',                  
                    async: 'true',
                    dataType: 'json',
                    beforeSend: function() {
                    // This callback function will trigger before data is sent
                        $.mobile.loading('show', {theme:"a", text:"Please wait...", textonly:true, textVisible: true}); // This will show ajax spinner
                    },
                    complete: function() {
                        // This callback function will trigger on data sent/received complete
                        $.mobile.loading('hide'); // This will hide ajax spinner
                    },
                    success: function (result) {
                        if(result.success === "success") {
                            alert("Groupe créé : "+result.success);
                            $.mobile.pageContainer.pagecontainer('change', $('#pageAffichageGroupe'), {
                                transition: 'slidefade',
                                reload    : true
                            });
                        } else {
                            alert('Erreur lors de la creation du groupe : ' + result.status);
                        }
                    },
                    error: function (request,error) {
                        // si la requête a échouché               
                        alert('error Connexion : ' + error + ' request Connexion : ' + request);
                    }
                });                  
            }
            else {
                alert("Veuillez remplir tous les champs s'il vous plait !");
            }
        });
    });
    J'ai beaucoup recherché sur le NET mais avec mon anglais bas niveau j'ai du mal à comprendre les réponses.
    Merci à ceux qui pourront m'aider.
    Cordialement

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 42
    Points
    42
    Par défaut
    Salut,

    visiblement tu es en "single page app" (ton app comporte une seule page HTML). D'après la doc jQuery, l'événement "pagecreate" est déclenché lors du chargement de la page.
    Dans ton cas, l'événement se produit une fois, au démarrage de l'app. Après, tu navigues dans la page donc l'événement ne va plus être déclenché.

    Comme solution, il faut mettre à jour la liste après le submit et avant de changer d'onglet.

Discussions similaires

  1. [jQuery Mobile] Dans une page HTML en Java
    Par ib.sissoko dans le forum Composants graphiques
    Réponses: 10
    Dernier message: 04/02/2014, 09h57
  2. Afficher une page après le menu
    Par Samanta dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/03/2006, 18h22
  3. Rafraîchir une page php
    Par WiLL_59 dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 18h16
  4. Actualiser une page après un "header location"
    Par salva57 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 10/01/2006, 22h09
  5. Rechargement d'une page après ouverture de deux popups
    Par petitmoosse dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2005, 16h39

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