我应该使用javascript进行页面提交吗?

时间:2010-07-22 08:22:17

标签: javascript

我正在一个大型网站上工作,在网站上有一个搜索模块。搜索是通过使用大量用户提交的值完成的,因此在分页时我必须将所有这些数据传递到下一页,将值附加到url使网址非常大。

Sso我该如何解决这个问题?我打算使用基于javascript的页面提交(POST),隐藏字段中的所有值到下一页,读取下一页的所有值。

会引起任何问题吗?或者我应该使用数据库来保持搜索标准?

5 个答案:

答案 0 :(得分:1)

我会创建一个服务器端对象,可能有一个数据库后端,由不同的页面更新。

在我看来,这是最明确和最简单的解决方案。通过邮寄或javascript或cookie为页面之间的参数提供也会起作用,但根据我的经验,这更像是一个怪癖。

此外,如果搜索查询非常复杂以至于需要多个页面来创建它,那么用户可能有助于将所有数据存储在服务器上,这样他就可以通过在服务器之间来回切换来更轻松地更改它。不同的页面。

答案 1 :(得分:1)

当触发初始搜索时,我会将所有搜索标准存储在服务器上的某种会话存储中。

对于分页,我会从会话存储中检索标准,然后只显示相应的结果。此外,我还会在分页链接上附加某种键(因此这将是唯一隐藏的后置字段),在该字段下可以找到搜索标准。

即使会话是针对每个用户,您可能会在同一会话中打开多个搜索窗口,并且您不希望将它们与分页混为一谈。

答案 2 :(得分:0)

使用隐藏字段和POST方法也应该没问题,除非你能够在下一页上得到它们。

答案 3 :(得分:0)

补充Sarfraz的答案......

没有必要使用Javascript来发布POST。

<form action="destination_url" method="POST">
    ...
</form>

答案 4 :(得分:0)

为了使用分页进行可靠的搜索,我们需要做的比平常更多。

我们需要处理以下案件。

  1. 搜索完成后,用户可以选择前后浏览。在这里,如果您在每个页面上进行表单提交,那将是一个过载。此外,如果用户按下浏览器刷新按钮,则会不必要地警告他正在提交数据。

  2. 在具有大量标准的大型数据库上进行搜索的成本很高。因此,优化很重要。

  3. 所以你应该执行以下操作:

    1. 提交每页更改的数据
    2. 不在cookie中存储数据。 (这不安全,甚至不可靠。)
    3. 对于具有复杂查询的大型数据库,将结果缓存在会话中。
    4. 如果您需要非常新的实时结果,请忽略第(3)点并尝试对每个页面进行部分搜索。
    5. 因此,对于您的情况,您可以执行以下操作:

      1. 当用户第一次搜索时,将表格POST数据设为搜索页面。
      2. 此搜索页面会将搜索查询存储在会话中,并为其生成唯一ID。
      3. 现在渲染结果页面。结果页面将传递搜索ID(在第2点中生成)和页码。示例result.aspx?searchId = 5372947645&amp; page = 2
      4. 结果页面将使用searchId从会话中获取查询,然后根据发送的页码提供结果。