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

我应该使用javascript提交页面吗?,javascript,Javascript,我在一个大网站上工作,在这个网站上有一个搜索模块。搜索是通过使用大量用户提交的值来完成的,因此在分页过程中,我必须将所有这些数据传递到下一页,将这些值附加到url使url非常大 Sso如何解决此问题?我计划使用一个基于javascript的页面提交(POST),将隐藏字段中的所有值发送到下一页,并从下一页读取所有值 会不会有什么问题?或者我应该使用数据库来保存搜索标准 使用隐藏字段和POST方法也可以,除非你能在下一页正确地找到它们。补充Sarfraz的答案 没有必要使用Javascript来制

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

Sso如何解决此问题?我计划使用一个基于javascript的页面提交(POST),将隐藏字段中的所有值发送到下一页,并从下一页读取所有值


会不会有什么问题?或者我应该使用数据库来保存搜索标准

使用隐藏字段和POST方法也可以,除非你能在下一页正确地找到它们。

补充Sarfraz的答案

没有必要使用Javascript来制作帖子

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

...

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

在我看来,这是最清楚、最简单的解决办法。通过post、javascript或cookie从一页到另一页提供参数也可以,但这在我的经验中更像是一种怪癖


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

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

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


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

为了使用分页进行可靠的搜索,我们需要做一些比正常情况更多的工作

我们需要处理以下情况

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

  • 在一个有很多条件的大型数据库上搜索是昂贵的。因此,优化非常重要

  • 因此,您应该而不是执行以下操作:

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

  • 当用户第一次搜索时,使表单将数据发布到搜索页面
  • 此搜索页面将在会话中存储搜索查询,并为其生成唯一id
  • 现在呈现结果页面。结果页面将被传递搜索id(在第2点中生成)和页码。示例result.aspx?searchId=5372947645&page=2
  • 结果页面将使用searchId从会话中弹出查询,然后根据发送的页码提供结果

  • 你有4K的饼干。这就足够了吗?如果我将所有用户提供的值存储在cookie中可以吗?我的计划是在用户单击页码(1,2,3,4…)时对页面进行汇总,这些元素必须是链接,我的计划是在有人单击分页器时提交页面,因为这些链接我们必须调用javascript函数来提交页面,