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 :

[Cordova] La modification des fichiers n'est prise en compte qu'après le redémarrage de l'application


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 8
    Points
    8
    Par défaut [Cordova] La modification des fichiers n'est prise en compte qu'après le redémarrage de l'application
    Bonjour,

    Je suis actuellement en train de développer une application Ios grâce à Cordova et l'API File.

    Je cherche à télécharger et mettre à jour deux fichiers XML locaux.

    Code Javascript : 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
    $.ajax({
            type: "GET",
            url: "https://site/folder/GetFluxXmlServlet",
            dataType: "text",
     
            beforeSend: function () {
                Results.innerHTML = 'Loading...<br>';
            },
     
            success: function (MAJ) {
     
                var content = MAJ;
     
                document.addEventListener("deviceready", checkIfFileExists, false);
     
                function checkIfFileExists() {
                    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {
                        fileSystem.root.getFile("global.xml", { create: false }, fileExists, fileDoesNotExist);
                    }, getFSFail);
                }
     
                function fileExists(fileEntry) {
                    fileEntry.createWriter(truncateFile, fileDoesNotExist);
                }
     
                function truncateFile(writer) {
                    writer.onwriteend = function (evt) {
                        console.log("Writer" + evt.code);
                        writer.seek(0);
                        writer.onwriteend = function (evt) {
                            console.log("Changed" + evt.code);
                        };
                        writer.write(content);
                    };
                    writer.truncate(0);
                }
     
                function fileDoesNotExist() {
     
                    document.addEventListener("deviceready", onDeviceReady, false);
     
                    function onDeviceReady() {
                        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onError);
                    }
     
                    function onSuccess(fileSystem) {
     
                        var directoryEntry = fileSystem.root;
     
                        directoryEntry.getFile("global.xml", {create: true, exclusive: false}, function (fileEntry) {
                            fileEntry.createWriter(function (writer) {
                                writer.write(content);
                            }, function (e) {
                                console.log("Error :" + e.code);
                            });
                        }, function (e) {
                            console.log("Error :" + e.code);
                        });
                    }
     
                    function onError(evt) {
                        console.log("Error :" + evt.code);
                    }
                }
     
                function getFSFail(evt) {
                    console.log(evt.target.error.code);
                }
            },
     
            complete: function () {
                Results.innerHTML = 'Success';
                window.location.reload(true);
            }
        })

    1. Appel Ajax
    2. Récupération des données
    3. Si le fichier existe, on le tronque et on écrit les nouvelles données
    4. Si le fichier n'existe pas, création puis écriture
    5. Rechargement de la page


    Toute cette partie fonctionne bien, seulement quand des modifications sont apportées au fichier du coté serveur et que je clique sur ma fonction de mise à jour, les changements n'apparaissent pas tant que je n'ai pas redémarré l'application.

    J'ai essayé :

    • De supprimer le fichier puis de le recréer
    • De vérifier les metadata du fichier
    • De changer de chemin d’accès
    • Etc...


    Pour conclure, le fichier XML est défini comme suit puis appelé par une autre méthode Ajax

    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    window.global = fileEntry.toURL();

    Cela peut-il influencer la récupération des nouvelles données, ou faut-il utiliser une autre méthode de mise à jour?

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Après recherche, il s'avère que les requêtes Ajax sont mises en cache. La solution consistant à mettre :

    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function() {
        $.ajaxSetup({ cache: false });
    });

    au début de mon fichier Javascript.

    Pour plus d'informations : http://www.w3schools.com/jquery/ajax_ajaxsetup.asp

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

Discussions similaires

  1. Seule une partie du fichier css est prise en compte
    Par CocoFlouq dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 02/04/2015, 09h27
  2. Réponses: 2
    Dernier message: 03/03/2012, 17h18
  3. [D7 - Word/PDF] Dates de modification des fichiers
    Par dacid dans le forum Composants VCL
    Réponses: 7
    Dernier message: 09/08/2007, 10h02
  4. Réponses: 4
    Dernier message: 01/08/2007, 17h22
  5. Réponses: 12
    Dernier message: 20/08/2006, 22h35

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