2012-10-14 122 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()相同。