2015-07-23 3 views
1

Я создаю базовое приложение 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); 
     } 
    }) 
  1. Ajax вызова
  2. получить данные
  3. Если файл существует обрезает его и записать новые данные
  4. Если файл Безразлично» t существует, мы создаем его и записываем данные
  5. Обновить страницу

Все это отлично работает, но когда изменения внесены в файл (на стороне сервера), и я нажимаю кнопку обновления Я не получаю изменения до перезапуска приложения.

Я пробовал:

  • Удаление файла и воссоздавать его
  • Я проверил метаданные
  • Я изменил путь к файлу
  • Etc ...

В заключение , созданный файл вызывается другим методом Ajax в глобальной переменной, определенной следующим образом:

window.global = fileEntry.toURL(); 

Может ли это повлиять на восстановление новых данных или есть лучший способ для обновления файла?

ответ

1

После экстраполяции моих исследований, я узнал, что запрос Ajax в настоящее время cached так просто добавили:

$(document).ready(function() { 
    $.ajaxSetup({ cache: false }); 
}); 

в начале моего файла Javascript.

Дополнительная информация: http://www.w3schools.com/jquery/ajax_ajaxsetup.asp

Смежные вопросы