我正在一个大型网站上工作,在网站上有一个搜索模块。搜索是通过使用大量用户提交的值完成的,因此在分页时我必须将所有这些数据传递到下一页,将值附加到url使网址非常大。
Sso我该如何解决这个问题?我打算使用基于javascript的页面提交(POST),隐藏字段中的所有值到下一页,读取下一页的所有值。
会引起任何问题吗?或者我应该使用数据库来保持搜索标准?
答案 0 :(得分:1)
我会创建一个服务器端对象,可能有一个数据库后端,由不同的页面更新。
在我看来,这是最明确和最简单的解决方案。通过邮寄或javascript或cookie为页面之间的参数提供也会起作用,但根据我的经验,这更像是一个怪癖。
此外,如果搜索查询非常复杂以至于需要多个页面来创建它,那么用户可能有助于将所有数据存储在服务器上,这样他就可以通过在服务器之间来回切换来更轻松地更改它。不同的页面。
答案 1 :(得分:1)
当触发初始搜索时,我会将所有搜索标准存储在服务器上的某种会话存储中。
对于分页,我会从会话存储中检索标准,然后只显示相应的结果。此外,我还会在分页链接上附加某种键(因此这将是唯一隐藏的后置字段),在该字段下可以找到搜索标准。
即使会话是针对每个用户,您可能会在同一会话中打开多个搜索窗口,并且您不希望将它们与分页混为一谈。
答案 2 :(得分:0)
使用隐藏字段和POST方法也应该没问题,除非你能够在下一页上得到它们。
答案 3 :(得分:0)
补充Sarfraz的答案......
没有必要使用Javascript来发布POST。
<form action="destination_url" method="POST">
...
</form>
答案 4 :(得分:0)
为了使用分页进行可靠的搜索,我们需要做的比平常更多。
我们需要处理以下案件。
搜索完成后,用户可以选择前后浏览。在这里,如果您在每个页面上进行表单提交,那将是一个过载。此外,如果用户按下浏览器刷新按钮,则会不必要地警告他正在提交数据。
在具有大量标准的大型数据库上进行搜索的成本很高。因此,优化很重要。
所以你应该不执行以下操作:
因此,对于您的情况,您可以执行以下操作: