【问题标题】:Store different data to each tab将不同的数据存储到每个选项卡
【发布时间】:2012-04-21 02:11:41
【问题描述】:

我需要将不同的 post 数据存储到浏览器中的每个选项卡。如果我打开同一页面的新实例,则数据不会在两者之间共享。

我的问题

我正在构建一个 CMS 来控制我的网站内容。但我会打开同一页面的一些实例(许多选项卡)。所以我有一个搜索表单来查找我在我的 CMS 上创建的新闻。如果我打开一个新闻项目,我有一个返回上一页(新闻列表)的 取消 按钮。

问题是新闻列表有分页和过滤形式。因此,例如,我可以按“john doe”之类的术语进行搜索,然后前进到第 5 页,然后打开一条新闻。如果我取消,目前我会返回没有过滤器和第一页的新闻列表。

我的解决方案

好吧,我不想使用history.back(),因为我可以提交新闻表单并单击返回/取消按钮。所以,我会回到当前的形式,有什么问题。

我的第二个想法是存储一个$_SESSION,将$_POST 发送到新闻列表,然后返回按钮将我发送到/news/list/recovery-session,这将从会话中恢复$_POST 数据。但它有一个问题:如果我打开两个标签并进行两次搜索,我只会保存最后一个会话。

您的解决方案

好吧,我可以使用 PHP 和 JS 来使它工作。你可以建议我能做什么。我考虑与 COOKIES 合作,但我相信它是由域共享的,而不是按标签共享的,这有什么问题。

有人吗?

【问题讨论】:

    标签: php javascript session


    【解决方案1】:

    生成一个唯一的 id 并将其附加到将要提交的表单或某些隐藏元素上。将该唯一 ID 保存在 cookie 或会话变量中。在提交时比较两者。

    如果第二个选项卡生成了新的 id,则第一个选项卡不会评估为 true。

    【讨论】:

      【解决方案2】:

      主要问题是在返回新闻列表页面时需要保持返回哪个页面的状态以及搜索词。有很多方法可以做到这一点,但一种简单的方法是将这些数据编码到您的查询字符串中。

      例如,假设您的搜索词是“john doe”并且您在第 5 页,将这些数据传递到您的新闻页面。

       news.php?returnSearchTerm=john+doe&returnPage=5& ....
      

      创建新闻页面后,您可以设置取消链接的格式,以使用正确的参数将您发送回列表页面。

       news_list.php?search=john+doe&page=5
      

      【讨论】:

        猜你喜欢
        • 2016-01-28
        • 2019-01-29
        • 2013-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多