我正在尝试使用jqtouch / jquery编写iPhone离线webapp。当我禁用我的连接时,它看起来像jquery .load()函数静默失败,甚至不调用它的回调函数。我已设置$.ajaxSetup ({cache: true});
,但似乎没有效果。我也有我的清单文件等正常工作 - 唯一的问题是.load()函数。
有什么想法吗?
答案 0 :(得分:0)
您是否使用正确的MIME类型提供清单文件?来自JQTouch Offline Support:
此外,清单必须与服务一起提供 MIME类型的text / cache-mainfest, 你可以在大多数情况下完成 具有.htaccess指令的服务器:
AddType text/cache-manifest .manifest要实现Cache Manifest, 只需在HTML中引用它即可 这样:
<html manifest="sample.manifest">
答案 1 :(得分:0)
原来他们调用.load()导致它执行POST而不是GET,这意味着它绕过了缓存。
我称之为
$.('#some-element').load('path/to/data',
[],
function(responseText, status, XMLHttpRequest) {
alert("Load finished: " + status + ". " + responseText);
}
);
我假设第二个空数组是正确的调用,但是这使得JQuery做了一个POST,大概是零参数。 GET的正确调用是:
$.('#some-element').load('path/to/data',
function(responseText, status, XMLHttpRequest) {
alert("Load finished: " + status + ". " + responseText);
}
);
答案 2 :(得分:0)
本地文件作为HTTP状态代码返回0。这是因为它们不是用HTTP检索的(它是本地的!)。 jQuery将此视为错误,这不一定是坏事。
尝试使用onComplete处理程序检索两个状态代码,将其与0进行比较并尝试读取响应文本。
您可能还想测试window.navigator.online(onLine?)以检查您是否处于脱机状态(因为状态代码0只应在您离线时发生)。