2012-03-16 84 views
6

当我将appcache添加到运行jquery mobile的webapp时,所有从我的服务器停止工作的ajax-calls请求json-files。我的清单文件如下所示:如何在使用HTML5的appcache功能时允许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 

回答

2

我曾与我工作的一个应用程序类似的问题,我已经在Ajax调用缓存标志的问题是违约为真。

我发现,当我加入

cache : false 

我的AJAX GET请求,请求到达服务器。 (http://api.jquery.com/jQuery.ajax/)

10

我刚刚遇到了这个问题,必须在清单文件的NETWORK部分添加一个通配符,以允许浏览器访问网络对于任何非高速缓存的资源。

NETWORK: 
* 
http://* 

您显然需要上面的两个通配符条目来支持所有的浏览器。

我还发现appcachefacts.info是一个有用的资源,可以理解关于appcache的这一点和其他细节。我建议在继续阅读appcache学习曲线之前先阅读本文:

NETWORK部分列出了所有可通过Internet加载的URL。如果您的应用程序包含任何API调用,请确保在此列举它们。请注意,这是一个URL前缀列表,因此如果您的所有网络通话都以http://example.com/api/开头,那么这就是您需要包含的全部内容。

如果您想要允许访问任意URL(脚本,样式表,API调用,任何内容),请在本节中包含*,http:// *和https:// *。 (Chrome和Safari尊重 *; Firefox需要http:// *和https:// *。)

+1

这真的应该是默认值。 HTML5 AppCache似乎没有很好地实现或指定。浏览器应呈现缓存页面,然后在后台下载新页面(如果存在连接以在每次重新载入时更新缓存)。但相反,它强制一种离线模式,即使用户有连接。 – 2012-09-04 21:47:44

0

我今天就抛出这个问题。但是,在只有两个步骤我的情况的工作:与

  1. $.ajax({ url: "/myurl", cache: false, ...})
  2. 配置应用程序缓存的网络会话我希望这是对你有用。

相关问题