缓存页面AJAX不起作用

时间:2010-11-24 02:40:18

标签: jquery ajax caching manifest jqtouch

每当在Firefox和Webkit中缓存页面时,它似乎都会失去所有的ajax功能。

<html manifest=cache.manifest>
<head>
    <script src="js/jquery.js" type="text/javascript"></script>
    <script src="js/jqtouch.js" type="text/javascript"></script>

它只会检索已缓存的页面,无论如何。有人知道怎么修这个东西吗? 提前致谢! 编辑:Ajax代码:

    var http = false;
    if(navigator.appName == "Microsoft Internet Explorer") {
      http = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
      http = new XMLHttpRequest();
    } 

  http.open("GET", "default.css", true);
http.setRequestHeader('CacheControl', "no-cache");
  http.onreadystatechange=function() {
    if(http.readyState == 4) {
      alert('4(good):'+http.responseText);
    }
  }
  http.send(null);

还为请求使用jquery $ .ajax。都没有工作。  JQuery的:

    $.ajax({

    url: site_url,

    cache: false,

    dataType: 'html',

    data: ({uuid : devid}),

    success: function(response){

他们总是说成功,但只有在缓存页面时才返回数据。否则返回null“”。

最后一件事:我要求不在清单上的页面,因为服务器端后端相当大。不可能在清单中包含所有页面。

基本上,我如何访问不在同一站点AJAX上的清单上的页面。每当我尝试当前它总是返回null。 返回03:11:41,即使没有缓存等等。

4 个答案:

答案 0 :(得分:1)

那不是真的。如果您明确地从页面请求数据,则会为您重新下载。您可以通过打开Firebug或Chrome的调试窗口来检查这一点,并观看浏览器发出http请求。

答案 1 :(得分:1)

我一直在努力让cache.manifest工作一段时间,它一直给我类似的回应。我有一个jquery移动应用程序使用Web服务来获取它的数据,直到我将web服务添加到我的cache.manifest文件的NETWORK部分之后才能正常工作

    CACHE MANIFEST
    # This is a comment.
# Cache manifest version 0.1.3.5
# If you change the version number in this comment,
# the cache manifest is no longer byte-for-byte
# identical.




NETWORK:
# All URLs that start with the following lines
# are whitelisted.

Service.svc

CACHE:
# Additional items to cache.

src/jquery-1.6.2.min.js
src/jstorage.min.js
src/jquery.numeric.js
src/jquery.format-1.1.min.js
assets/json2.min.js
assets/jquery.signaturepad.css
assets/jquery.signaturepad.min.js
jquery.mobile-1.0b2/jquery.mobile-1.0b2.min.css
jquery.mobile-1.0b2/jquery.mobile-1.0b2.min.js
jquery.mobile-1.0b2/images/ajax-loader.png
jquery.mobile-1.0b2/images/icon-search-black.png
jquery.mobile-1.0b2/images/icons-18-black.png
jquery.mobile-1.0b2/images/icons-18-white.png
jquery.mobile-1.0b2/images/icons-36-black.png
jquery.mobile-1.0b2/images/icons-36-white.png
src/link-1-3.js
src/events-1-3.js
src/custom-styles.css
Login.html

答案 2 :(得分:0)

默认情况下,jquery的ajax函数将接收它的数据(json和jsonp除外)。您可以使用以下命令告诉ajax调用不要缓存:

$.ajax({
  cache: false
})

答案 3 :(得分:0)

IE中的以下代码进行服务器调用,因为您正在缓存它不进行后续调用...

if(navigator.appName == "Microsoft Internet Explorer") {
      http = new ActiveXObject("Microsoft.XMLHTTP");