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