即使URL更改,也会在同一窗口中保留数据

时间:2015-09-21 17:57:54

标签: javascript jquery persistent-storage

我在欢迎页面中有数据的图表,如小部件(/ welcome)。当用户单击图形时,页面将更改为/ home / default,并且应显示相同的图形以及一些由Ajax调用填充的额外数据。我想要的是将/ welcome中的图形数据保存到/ home / default页面。我不希望数据转到控制器并返回到/ home / default页面。请建议。

2 个答案:

答案 0 :(得分:0)

简而言之,您需要为用户设置一些状态,然后在呈现/ home / default页面时,您需要检查该状态并对页面的显示进行相应的更改。

这可以在服务器端(在页面呈现中)或客户端(通过Javascript向页面添加内容)完成。

如果您在客户端执行此操作,则在重定向时,状态可以存储在Cookie,LocalStorage或URL中的查询参数中。然后,将Javascript代码放入/ home / default,检查该状态并根据状态动态地向页面添加内容。

如果你在服务器端执行此操作,那么状态可以存储在cookie或某些服务器端数据存储中,然后当呈现/ hoome / default页面时,服务器端页面呈现过程可以检查状态对于此特定用户,并修改页面的呈现以包含所需内容。

答案 1 :(得分:0)

你有很多选择。最佳解决方案取决于您的应用程序当前是如何实现的 - 无论是否在框架中,是否使用会话等。您选择的任何方法的原则是几乎相同:存储值然后检索它以后。

单页应用程序(SPA

如果您还没有使用框架,我建议您考虑迁移到一个框架,因为这些任务在实现过程中会变得更加优雅。

服务/数据存储

如果您正在构建SPA,那么您可能不必考虑以下任何选项...只要在用户执行“真实”#时数据丢失并不重要39;框架无法拦截的导航(例如,刷新页面)。

在Angular中,您可以以service的形式维护临时数据存储。只需存储数据,然后从另一个控制器中获取数据。在所有其他流行的SPA框架中可以实现类似的功能:

Local Storage

本地存储在IE8及更高版本中可用,并且具有非常简单的API。

IndexedDB

如果您已进入最前沿且未受浏览器支持限制,请考虑使用IndexedDB。除非您想要在客户端计算机上远程保存大量数据,否则我建议不要使用此功能。 (目前确实有不好的支持。)

Cookies

如果您的应用程序不灵活,那么Cookie将是最简单且最省时的。然而,本地存储可能是竞争者。