我已经使用完整的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>
分隔符login
和dashboard
最初在页面加载时隐藏,但会根据会话的存在和有效性进行显示。 (因此,如果您已登录,则仪表板显示,如果不是,则登录显示)
在信息中心中,有敏感数据,例如您当前的余额,最近的交易等。当用户决定退出时,该信息仍然存在于HTML中。
我不想做以下事情:
$(".nickname").html('');
$(".balance").html('');
$(".transactions").html('');
请注意,我的标记,嵌套和复杂程度远远超过.html
。
我不想在退出时刷新页面。
通过不刷新页面,我无法删除$(".dashboard").html()
等HTML节点,因为这会破坏在用户登录后将数据放入这些div的任何代码。
我想要阻止的是,有人登录,注销,然后其他人进来,并使用firebug / chrome开发控制台在源仪表板上达到峰值。目前发生的情况是,仪表板被隐藏,cookie被删除,并显示登录。仪表板中的数据不会被清除。
有没有办法可以保存当前的HTML页面,然后当用户注销时,我可以重置整个页面而不刷新?
答案 0 :(得分:1)
您可以克隆仪表板:
$('.dashboard-template').clone().addClass('dashboard').insertBefore('.dashboard-template');
然后填写相关信息,并在注销时将其删除。
答案 1 :(得分:0)
我编写类似系统的方法是将登录页面分开。登录后,所有内容都由AJAX构建。注销时,用户将被发送回登录页面。使用一次性安全代码来构建页面会停止返回到浏览器的上一页。
那就是说,我不确定你怎么能避免使用html('')
之类的东西,或者为什么这样的解决方案如此不受欢迎。也许.remove()
- 请参阅here?
答案 2 :(得分:0)
您可以使用webstorage存储缓存中的数据,在用户登录时保存数据,捕获数据,填写表单然后删除网络存储中的数据