离线时,JQuery .load()函数以静默方式失败

时间:2010-05-17 13:57:00

标签: iphone jquery web-applications offline jqtouch

我正在尝试使用jqtouch / jquery编写iPhone离线webapp。当我禁用我的连接时,它看起来像jquery .load()函数静默失败,甚至不调用它的回调函数。我已设置$.ajaxSetup ({cache: true});,但似乎没有效果。我也有我的清单文件等正常工作 - 唯一的问题是.load()函数。

有什么想法吗?

3 个答案:

答案 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只应在您离线时发生)。