2

所以,我有一个页面,其中有几个带有 onClick 事件的链接,这些链接将从外部文件中检索数据并用这些数据填充一个 div。这按预期工作。但是,当我刷新页面时,div 再次清空。我想要发生的是,在刷新后,div 将保持最后检索到的内容。

我不想走 cookie 的道路,并考虑将数据添加到 URL,我认为这是我想要的方式。

是否有一些不错的 JQuery 调用可以在单击链接时将数据附加到 url,然后在刷新时将所需内容恢复到 div?

我的 loadContent 函数是:

function loadContent (url, container) {
    var target = $(container);
    target.load(url, function (text, statusText) {
        if (statusText === "success") {
            target.find("a[rel^='gridnav']").initgn();
        }   
    });
}

编辑:我忘了提,这条线

target.find("a[rel^='gridnav']").initgn();

用于在加载的新内容上重新初始化脚本。

所以当我点击一个链接时,onClick 事件会像这样调用函数

<a href="#" onClick="loadContent('xyz.html', '#right')">TEST</a></li>

其中 xyz.html 仅包含我想要在 div "#right" 中的数据

有没有办法编辑这个功能来做我想做的事?

4

4 回答 4

0

您可以通过使用将数据附加到 url

window.location.hash

https://developer.mozilla.org/en-US/docs/DOM/window.location

如果你在 jQuery 插件中搜索 QueryString,应该有几十个插件可以简化这个任务。

于 2012-08-17T15:24:46.780 回答
0

我会使用本地存储。它就像 cookie,但更容易维护。唯一的缺点是并非所有旧版浏览器都支持它(有关浏览器支持,请参阅http://caniuse.com/#search=localStorage)。有关该功能的或视图,请参阅https://developer.mozilla.org/en-US/docs/DOM/Storage如果您想完全不使用类似 cookie 的功能;那么据我所知,它必须在服务器端完成

于 2012-08-17T15:25:01.230 回答
0

如果没有 cookie,您的任务会有点困难。但我可能有两个解决方案给你:

  1. 使用服务器上的会话,您可以控制调用了哪个 ajax,因此下次加载主页时,您可以将新内容附加到其中。
  2. 使用 url 哈希附加 ajax 锚点已被单击#anchorname,因此您可以在重新加载后单击它。
于 2012-08-17T15:26:03.300 回答
0

该评论告诉您如何在不加载页面的情况下修改 url。你可以用那个。如果您必须使用旧版浏览器,那么您仍然可以使用片段(或同时使用这两种操作)。

有一些用于 jQuery/JavaScript 的历史插件来管理这个......这是一种称为“深度链接”的技术。你也许能找到一些简单的东西。基本上,在loadContent运行时,您希望使用指示加载内容 ID 或类似内容的片段/whatever来更新 url。/whatever#right

另一种选择是在页面最初加载时加载到该 div 的服务器上设置一些标志,这也可以为您节省 ajax 请求。但是,取决于您的服务器代码的设置方式,这可能对您不起作用。

于 2012-08-17T15:27:22.163 回答