Я делаю webapp. Некоторые из загружаемых файлов содержат чистые статические данные .JSON. Я использую jQuery.ajax() (jQuery 1.5.2) с dataType: 'json' и cache: true. Все работает хорошо, и все файлы загружаются. Я также настроил манифест кэша для кэширования этих файлов JSON (в дополнение к css, js и изображениям). Там все хорошо работает - когда пользователь посещает мой сайт, все файлы, которые мне нужны, кэшируются правильно (у меня есть обработчики событий ApplicationCache, которые подтверждают, что все хорошо). Я тестировал все в Google Chrome, и я вижу, что все файлы (включая JSON) кэшируются. Когда я отключусь от сети, все работает (jQuery ajax вызывает автоматическое извлечение кэшированных файлов JSON).
Теперь я пытаюсь проверить это на мобильном Safari (на реальном iPad и симуляторе iPhone). Все работает так, как ожидалось, когда в Safari - страницы кэшируются и при последующих посещениях с отключенной сетью используются кэшированные файлы.
Однако, когда я добавляю приложение на Домашний экран, используя "добавить на главный экран" в Safari, приложение запускается, и все .js,.css и изображения работают правильно, НО мои вызовы Ajax не делают! Они не имеют доступа к кэшированным файлам .json. Для каждого вызова Ajax XMLHttpRequest.status
равен 0
, .statusText
- error
, но getAllResponseHeaders()
показывает те же (правильные) заголовки, что и в функциональном приложении в Safari.
Я не понимаю. Это ограничение/ошибка в jQuery.ajax() или что? Любая помощь приветствуется.