2012-10-14 97 views
1

我有一个需要升级以提供本地存储缓存功能的Jquery网站,如果存在缓存的响应HTML,则Target首先进行每个Ajax请求检查,然后它不会调用服务器端,而是从缓存获取数据。 一切正常缓存和显示缓存等数据..Jquery缓存使用本地存储的Ajax XMLHttpResponse使用本地存储

当我的缓存核心应用到严重依赖于XML HTTP响应头的网站时,出现了我的问题;看来,当我尝试缓存XMLHttpResponse对象从Ajax调用透过JSON.stringify()序列化它,当然后返回时,desearialized对象从JSON.parse()来返回不包含响应头!

我必须从包含所有先前添加的报头缓存返回XMLHttpResponse对象,因为所有的网站都处理它作为XMLHttpResponse的对象。

什么想法?

+0

你需要编写'XMLHttpRequest'对象的自定义序列化和解析。 JSON仅支持由[JSON规范](http://json.org)定义的数据类型。功能显然不包括在内。提示:定义'XMLHttpRequest.prototype.toJSON',看看'JSON.parse'和XHR实例的'getAllResponseHeaders'方法。 –

回答

0

我发现了一个变通解决此...

,因为所有的网站需要一个XMLHttpResponse对象来处理,我建就像一个自定义XMLHttpResponse类,这个类包含了所有的变量/在这些网站正在使用的功能像下面的例子:

var CustomXMLHTTPResponse = 
{ 
    ResponseHeadersArr: new Array(), 

    getResponseHeader: function (Key) { 
     return this.ResponseHeadersArr[Key]; 
    } 
. 
. 
} 

,而不是缓存整个对象而且,我只缓存我从原来的XMLHttpResponse对象所需要的,其实我缓存在这种情况下的响应头;当我得到这个缓存的数据,我建立一个新的CustomXMLHTTPResponse对象,然后从缓存中得到的数据填充它,最后我通过CustomXMLHTTPResponse对象。

所以,当调用CustomXMLHTTPResponse类中的getResponseHeader()函数时,它的作用与原始XMLHTTPResponse类中的getResponseHeader()相同。