Я создаю базовое приложение Ios с помощью PhoneGap и File API для загрузки и обновления XML-файлов.Изменения в файлах не отображаются до перезапуска приложения (File API)
Часть загрузки выполняется с помощью вызовов Ajax, а обновление выполняется с помощью объектов FileEntry.
Вот как это выглядит:
$.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);
}
})
- Ajax вызова
- получить данные
- Если файл существует обрезает его и записать новые данные
- Если файл Безразлично» t существует, мы создаем его и записываем данные
- Обновить страницу
Все это отлично работает, но когда изменения внесены в файл (на стороне сервера), и я нажимаю кнопку обновления Я не получаю изменения до перезапуска приложения.
Я пробовал:
- Удаление файла и воссоздавать его
- Я проверил метаданные
- Я изменил путь к файлу
- Etc ...
В заключение , созданный файл вызывается другим методом Ajax в глобальной переменной, определенной следующим образом:
window.global = fileEntry.toURL();
Может ли это повлиять на восстановление новых данных или есть лучший способ для обновления файла?