0

我正在测试使用本地存储的应用程序的概念,并且需要知道在存储内容后加载内容的最佳方式。

本质上,该应用程序将预取内容,将其存储在本地,然后根据请求在新页面中提供服务。我需要用户能够单击链接 (mysite.com/article1.html),而不是让浏览器对页面发出 HTTP 请求,只需加载本地存储的 HTML。

那么如何加载“localNews”值而不是为同一页面创建 HTTP 呢?

var storeUrl;
var localNews;

$('a').click(function() {
event.preventDefault();
storeUrl = $(this).attr('href');
$.ajax({
    url: storeUrl,
    cache: true,
    crossDomain: true
}).done(function(html) {
    localNews = html;
    console.log(localNews);
    localStorage.setItem('storeUrl', 'localNews');
});
});
4

2 回答 2

0
    var storeUrl;
    var localNews;

    $('a').click(function(event) {
        event.preventDefault();
        storeUrl = $(this).attr('href');
        if (localStorage.getItem(storeUrl)) {
            //load local
        } else {
            $.ajax({
                url: storeUrl,
                cache: true,
                crossDomain: true
            }).done(function(html) {
                localNews = html;
                console.log(localNews);
                localStorage.setItem(storeUrl, localNews);
            });
        }
    });
于 2013-01-23T16:36:26.093 回答
0

所以基本上你想通过 Ajax 加载一个本地文件?可以做到,但只需对您的 Ajax 调用做一些小的调整。所以改变这个:

$.ajax({
    url: storeUrl,
    cache: true,
    crossDomain: true

对此:

$.ajax({
    url: storeUrl,
    cache: true,
    crossDomain: true,
    async: false,
    dataType: 'html',
    contentType: 'text/html;charset=utf-8'

注意async和。datatype_ contentType自从我编写此代码以来已经有一段时间了,但我相信关键参数是andasync也是必需的。datatypecontentType

于 2013-01-23T16:44:28.277 回答