1

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

有任何想法吗?

4

3 回答 3

0

您是否使用正确的 MIME 类型提供清单文件?来自JQTouch 离线支持

此外,必须使用 MIME 类型的 text/cache-mainfest 提供清单,您可以在大多数服务器上使用 .htaccess 指令来完成:

AddType 文本/缓存清单 .manifest

要实现缓存清单,只需在 HTML 中引用它,如下所示:

<html manifest="sample.manifest">
于 2010-05-17T14:04:41.107 回答
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);
                         }
                        );
于 2010-05-17T19:57:39.220 回答
0

本地文件返回 0 作为 HTTP 状态代码。这是因为它们不是通过 HTTP 检索的(它是本地的!)。jQuery 将此视为错误,这不一定是坏事。

尝试使用 onComplete 处理程序来检索两个状态代码,将其与 0 进行比较并尝试读取响应文本。

您可能还想测试 window.navigator.online (onLine?) 以检查您是否离线(因为状态代码 0 应该只在您离线时出现)。

于 2010-05-17T20:17:07.200 回答