2011-04-14 76 views
0

我正在嘗試編寫一個看起來像iPad應用程序並具有脫機可用性的Web應用程序。爲此,我指示瀏覽器使用清單等緩存我的文件。當我嘗試ajax xml時,它首次運行,但隨後失敗。有趣的是,它「失敗」,但xhr.responseXML是正確的!只有在Safari中,Ajax請求才會失敗,只有在緩存XML時

這只是Safari中的一個問題,無論是在Windows上還是在iPad上。這個問題僅僅表現在來自緩存的負載上,第一次一切正常。

thrownError是「」,xhr.status是0,xhr.statusText是「error」。

$.ajax({ 
    type: "GET", 
    url: "data.xml", 
    dataType: "xml", 
    success: function(xml) { 
     do_stuff(xml); 
    }, 

    error: function (xhr, ajaxOptions, thrownError) { 
     do_stuff(xhr.responseXML); // Why does this work? 
    } 
}); 

任何想法?我最好的猜測是,XML是加載了錯誤的MIME類型?

回答

0

當您的頁面最初加載時,data.xml尚未處於緩存中,因此ajax調用會直接進入服務器。既然你已經擁有了緩存清單中列出的xhr請求的url,你的瀏覽器會爲它做一個非xhr請求並將它存儲在緩存中。後續的頁面加載將從緩存中加載並返回非xhr請求。

確保您可以作爲非xhr請求訪問data.xml,並且它包含要顯示的數據。

相關問題