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?