【发布时间】:2011-07-13 22:13:51
【问题描述】:
我在我的页面上进行了搜索,其中有一个过滤菜单、一个排序选项和一个页面浏览器。客户希望,如果他搜索某些内容并单击产品,然后再次单击“返回”或“搜索”,那么相同的搜索和结果会再次显示。
我不想通过每个链接(错误的 url)传递所有搜索参数,所以我将所有这些数据存储在会话中。这工作正常,但有一个问题:
用户打开搜索并按“size=big”过滤,然后打开一个新标签并将过滤器更改为“size=small”。现在他的会话中有“size=small”。因此,如果他切换回第一个选项卡并在此处单击“第 2 页”,那么他会看到第二页,但不是他预期的“size=big”,而是“size=small”。
有没有一种很好的方法来解决这个问题而无需一直传递所有变量(很多!)?
【问题讨论】:
-
你如何定义“坏网址”?通常将这些参数放入 url 会更舒服,因为这样可以为链接添加书签或通过电子邮件发送。
-
+1 到 KingCrunch。如果你按照你建议的方式去做,你会给自己带来更多的问题。
-
这个链接现在非常好,比如:www.x.y/category/product/,所有的东西都更像/category/product/search1/value1/search2/value2/page/sorting其中可能有多达 11 个不同的搜索参数。即使在主菜单链接中,这也必须无处不在,并且这些链接必须在 ajax 事件上发生变化.. 我认为这不是一个很好的解决方案
-
我同意 KingCrunch 的观点,“www.x.y/category/product/”比将搜索参数放入链接要糟糕得多,因为无法“存储”搜索结果以供以后使用。在浏览页面时保留所有参数似乎不是一个好主意。我现在正在开发一个系统,我将搜索参数存储在会话中 - 它带来的混乱多于便利,因此我不得不切换到通过 URL 传递参数。至于更改 ajax 事件的 URL,谷歌通过在
#字符之后的 URL 中添加变量来解决这个问题。 -
如果你有一个特定的用户群,你可以控制他们使用的浏览器,你也可以使用 HTML5 历史 API。 Github 做到了。