我正在使用PhoneGap和File API构建一个基本的Ios应用程序来下载和更新XML文件。
下载部分使用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方法调用:
window.global = fileEntry.toURL();
这会影响新数据的恢复,还是有更好的方法来更新文件?
答案 0 :(得分:1)
在推断我的研究后,我发现Ajax请求正在cached,所以我只是添加:
$(document).ready(function() {
$.ajaxSetup({ cache: false });
});
在我的Javascript文件的开头。