我正在尝试编写一个看起来像iPad应用程序的网络应用程序,具有离线可用性。为此,我指示浏览器使用清单等缓存我的文件。当我尝试ajax xml时,它第一次工作,但后续失败。有趣的是,它“失败”,但xhr.responseXML是正确的!
这只是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 :(得分:0)
当你的页面最初加载时,data.xml还没有在缓存中,所以ajax调用直接进入服务器。由于您已在缓存清单中列出了xhr请求的URL,因此您的浏览器将对其发出非xhr请求并将其存储在缓存中。页面的后续加载将从缓存加载并返回非xhr请求。
确保您可以作为非xhr请求访问data.xml,并且它包含您想要显示的数据。