0

我已经使用完整的 ajax 设置了一个在线银行系统。这意味着一切都发生在一页上。

<div class="login">
    <input type="text" class="username">
    <input type="password" class="password">
    <input type="submit" value="Login">
</div>
<div class="dashboard">
    <div class="nickname"></div>
    <div class="balance"></div>
    <div class="transactions"></div>
</div>

分隔符logindashboard最初在页面加载时隐藏,但根据会话的存在和有效性显示。(因此,如果您已登录,仪表板显示,如果您未登录,则显示登录)

在仪表板中,有敏感数据,例如您的当前余额、您最近的交易等等。当用户决定注销时,该信息仍然存在于 HTML 中。

我不想做一些事情,例如:

$(".nickname").html('');
$(".balance").html('');
$(".transactions").html('');

请注意,我有更多的标记、嵌套和复杂的不仅仅是.html.

我不想在注销时刷新页面。

通过不刷新页面,我无法删除 HTML 节点,例如$(".dashboard").html(),因为这会破坏任何在用户登录后将数据放入这些 div 的代码。

我试图阻止的是,有人登录、注销,然后其他人进来,并使用 firebug/chrome 开发控制台在源仪表板达到峰值。目前发生的情况是,仪表板被隐藏,cookie 被删除,并显示登录。仪表板中的数据不会被清除。

有没有办法可以保存当前的 HTML 页面,然后当用户注销时,我可以在不刷新的情况下重置整个页面?

4

3 回答 3

1

您可以克隆仪表板:

$('.dashboard-template').clone().addClass('dashboard').insertBefore('.dashboard-template');

然后填写相关信息,退出时删除。

于 2013-08-18T03:49:47.253 回答
0

我编写类似系统的方法是将登录页面分开。登录后,一切都由 AJAX 构建。注销时,用户将返回登录页面。使用一次性安全代码来构建页面会停止返回浏览器的前一页面。

也就是说,我不确定如何避免使用类似的东西,html('')或者为什么这样的解决方案如此不可取。也许.remove()——看到这里

于 2013-08-18T03:45:15.257 回答
0

您可以使用网络存储在缓存中存储数据,在用户登录时保存数据,捕获数据,填写表格然后删除网络存储中的数据

于 2013-08-18T03:47:12.280 回答