[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:
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);
}
}) |
- Appel Ajax
- Récupération des données
- Si le fichier existe, on le tronque et on écrit les nouvelles données
- Si le fichier n'existe pas, création puis écriture
- 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:
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?