Как разрешить запросы json при использовании функции appcache в HTML5? - PullRequest
6 голосов
/ 16 марта 2012

Когда я добавил appcache в свое веб-приложение, работающее на jquery mobile, все ajax-вызовы, запрашивающие json-файлы с моего сервера, работали.Мой файл манифеста выглядит так:

CACHE MANIFEST

CACHE:

index.html
scripts/jquery-1.7.1.min.js scripts/jquery.flot.min.js
scripts/jquery.flot.threshold.min.js
scripts/jquery.mobile-1.0.1.min.js
styles/jquery.mobile-1.0.1.min.css
styles/touchStyles.css
styles/styles.css

NETWORK: 

index.appcache
dataFetchAndDraw.js
initJson

Где initJson - один из вызовов, который не будет работать.я попытался ввести полный адрес (aaa: bbb: ccc: ddd: 6565 / initJson) также безуспешно.

В моем файле .htaccess у меня только одна строка:

AddType text/cache-manifest .manifest

Ответы [ 3 ]

10 голосов
/ 19 июня 2012

Я только что столкнулся с этой проблемой, и мне пришлось добавить подстановочный знак в раздел NETWORK файла манифеста, чтобы разрешить браузеру подключаться к сети для любых не кэшированных ресурсов.

NETWORK:
*
http://*

Очевидно, что для поддержки всех браузеров необходимы обе указанные выше символы подстановки.

Я также нашел appcachefacts.info полезным ресурсом для понимания этой и других особенностей appcache. Я рекомендую прочитать это до того, как продолжить изучение кривой appcache:

В разделе СЕТЬ перечислены все URL, которые могут быть загружены через Интернет. Если ваше приложение включает какие-либо вызовы API, обязательно перечислите их здесь. Обратите внимание, что это список префиксов URL, поэтому, если все ваши сетевые вызовы начинаются с http://example.com/api/,, это все, что вам нужно включить.

Если вы хотите разрешить доступ к произвольным URL-адресам (скрипты, таблицы стилей, вызовы API и т. Д.), Включите *, http://* и https://* в этот раздел. (Chrome и Safari респект *; Firefox нужны http://* и https://*.)

2 голосов
/ 21 мая 2012

У меня была похожая проблема с приложением, над которым я работал, у меня была проблема с флагом кеша в вызове ajax, по умолчанию равным true.

Я обнаружил, что при добавлении

cache : false

в мой запрос GET ajax запрос попадает на сервер.(http://api.jquery.com/jQuery.ajax/)

0 голосов
/ 27 ноября 2013

Я кидаюсь на эту проблему сегодня. Но в моем случае работа только с двумя шагами:

  1. $.ajax({ url: "/myurl", cache: false, ...})
  2. Конфигурировать сессию appcache NETWORK с помощью

Надеюсь, это полезно для вас.

...