我有大量来自服务器的行数据.如何在新页面(即重定向页面)上显示此数据

I have a large number of row data coming in from server. How do I display this data on a new page(i.e Redirected Page)?

本文关键字:数据 重定向 新页面 显示 服务器      更新时间:2023-09-26

在第 1 页上,我有大量的行数据 (JSON( 来自数组中的服务器。我想在第 2 页上显示此数据,这是单击第 1 页时要重定向到的页面。我在服务器上使用 Javascript/Jquery 和 PHP 代码。

我在其他地方读到这可以使用表单来完成,但是如何将值分配给字段?有人可以展示这究竟是如何完成的吗?

正如我在评论中提到的,有多种方法可以实现您想要的,决定一种或另一种在很大程度上取决于您想要做什么或做什么:

  • 是大量数据吗?
  • 您希望在客户端还是服务器端完成?
  • 您有任何安全问题吗?
  • 是否有任何带宽限制?
  • 等。

在决定从一种方法或另一种方法中,您需要考虑这些问题的答案。以下是一些选项:


形式

您可以将数据放在第 1 页上的form中(格式化或仅作为将在第 2 页上重新处理的大块(,然后将数据从一个提交到另一个。

<form method="POST" action="page2.php">
    <textarea name="data">YOUR DATA HERE</textarea>
</form>

如果您已经有一个表单将数据从第 1 页发送到第 2 页,请考虑将其添加为可以在第 2 页阅读的隐藏输入。

优点:

  • 易于实施。
  • 各种可能性(GET或POST,全部在一个字段中或每个字段中(
  • 如果允许用户对数据进行更改,则更加灵活。

缺点:

  • 交通负荷大。相同的数据将多次传输:服务器>客户端(加载页面 1 时(、客户端>服务器(提交表单(、服务器>客户端(加载页面 2(。
  • 如果使用 GET 方法,则大小有限:服务器和客户端(浏览器(会限制大小限制。

对于您的特定情况:我可能不会使用此方法,因为您将来回发送(大量(数据,这对性能不利,尤其是在移动连接中。


饼干

您可以将数据存储在第 1 页的 Cookie 中,然后在第 2 页上读取该 Cookie。你可以在JavaScript(客户端(或PHP(服务器端(中实现它,结果将是等效的。

<?php
    $cookie_name = "data";
    $cookie_value = "YOUR DATA HERE";
    setcookie($cookie_name, $cookie_value, time() + (3600 * 24), "/"); 
?>

优点:

  • 易于实施。
  • PHP或JavaScript,结果将是相似的(除非你使用一些HTTPOnlycookie(

缺点:

  • 尺寸有限。同样,这将取决于客户端使用的浏览器(您可以在此网站上看到一些数据(。
  • 不如其他方法安全(你不能真正相信你正在阅读的内容(。
  • 用户可能已禁用/拒绝 Cookie(您不知道 Cookie 是否会存在(。

对于您的特定情况:我也不会选择这种方法。它不太安全,无论如何,cookie 都会随着每个页面加载而发送到服务器。


服务器数据库/文件

将数据发送到第 1 页之前将数据存储在数据库中(如果数据库中已有数据,并且由于需要很长时间而不想重新运行查询,则可以创建结果的缓存版本(,然后在第 2 页上读取该记录。

或者,您可以遵循类似的方法,但不要将数据存储在表中,而是将结果保存在文件中。然后第 2 页将读取该文件并获取数据。

优点:

  • 您始终可以控制数据。
  • 无需担心用户是否激活了JavaScript/cookie。

缺点:

  • 复杂的实现(需要权限/重新设计解决方案(。
  • 数据仍将传输两次(服务器>第 1 页和服务器>第 2 页(。

对于您的特定情况:这可能是您现在正在做的事情,并且您想将其更改为:)


索引数据库

另一个HTML5功能,允许您创建面向对象的本地数据库,您可以在其中使用键索引存储和检索对象。

优点:

  • 性能好。
  • 适用于大量数据。
  • 数据存储在本地,不会传输到服务器。

缺点:

  • 不完全支持(请参阅此页面(。
  • 复杂的实现。

对于您的特定情况:我不会使用此方法,因为它很复杂且不完全受支持。


本地存储/会话存储

HTML5引入了Web Storage API,其中包含两种在用户浏览器中本地存储数据的方法:localStorage和sessionStorage。两者之间的区别在于,使用一个,即使浏览器关闭(localStorage(,数据也会保留,而另一个数据只会在页面会话处于活动状态时存活(sessionStorage(。

<script type="text/javascript">
    localStorage.setItem("data", "YOUR DATA HERE");
</script>

优点:

  • 易于实施。
  • 它允许比 cookie 更大的数据量(至少 5MB(。
  • 数据存储在本地,不会传输到服务器。

缺点:

    禁用
  • cookie 也会禁用本地存储。
  • 安全页面上的 LocalStorge 值是隔离的(如果您的页面在 http 和 https 之间更改,这可能会导致有趣的错误(。

对于您的特定情况:只要您的数据大小符合限制,这就是我会使用的方法。

您在第 1 页上获取数组中的数据。您必须在第 2 页上传递此数据才能在那里显示结果。要将数据传递到第 2 页,应执行以下步骤。
1. 获取 JSON 数组并序列化它。 {最好的替代方法是获取用于获取 JSON 数据的参数。 将这些参数传递到第 2 页并使用它们来获取 JSON 数据。 因此,与其传递 JSON 数据数组,不如传递参数,通过这些参数,您可以从第 2 页再次生成 JSON 数据。
2.要传递参数/json数据序列化一个,无论您喜欢哪个, 隐藏 DOM 中的数据。隐藏的数据将在表单中。

<form action='.page2' method='POST' id='redirect_form'>
  <hidden data in dom >
 <button type='submit' which on click redirects to page 2>
</form>


3. 在第 2 页上,利用您发布的数据来显示阵列。