我从服务器进来了大量的行数据。如何在新页面(即重定向页面)上显示此数据?

时间:2015-06-25 10:18:29

标签: javascript php jquery html json

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

我在其他地方读过这可以使用表单来完成,但是如何为字段赋值? 有人能说明这是怎么做到的吗?

2 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,有多种方法可以达到你想要的,决定一种或另一种方式将高度取决于你想做什么或做什么:

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

在决定使用某种方法之前,您需要考虑这些问题的答案。以下是一些选项:

表单

您可以将数据放在第1页的form中(无论是格式化还是仅作为第2页将要重新处理的一个大块),并将数据从一个提交到另一个。

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

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

优点:

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

缺点:

  • 交通拥挤。相同的数据将多次传播:服务器&gt;客户端(加载第1页时),客户端&gt;服务器(提交表单),服务器&gt;客户(加载第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,结果将类似(除非您使用一些HTTPOnly cookie)

缺点:

  • 尺寸有限。同样,它将取决于客户端正在使用的浏览器(You can see some data on this web site)。
  • 不如其他方法安全(你不能真正信任你正在阅读的内容)。
  • 用户可能已禁用/拒绝过Cookie(您不知道该Cookie是否存在)。

针对您的具体情况:我也不会采用这种方法。它不太安全,并且无论如何都会在每个页面加载时将cookie发送到服务器。

服务器数据库/文件

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

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

优点:

  • 您始终可以控制数据。
  • 如果用户激活了JavaScript / Cookie,则无需担心。

缺点:

  • 复杂的实施(需要权限/重新设计解决方案)。
  • 数据仍会传输两次(服务器&gt;第1页,服务器&gt;第2页)。

针对您的特定情况:这可能就是您现在正在做的事情,并且您想要更改它:)

索引资料

另一个HTML5功能,允许您创建本地object-oriented database,您可以使用键索引存储和检索对象。

优点:

  • 表现良好。
  • 适合大量数据。
  • 数据存储在本地,不会传输到服务器。

缺点:

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

LocalStorage / SessionStorage

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

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

优点:

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

缺点:

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

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

答案 1 :(得分:0)

您将在第1页上获取数组中的数据。 你必须在第2页传递这些数据才能在那里显示结果。 要将数据传递到第2页,应执行以下步骤 1.获取json数组并序列化它。    {best alternative是获取用于获取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页上,使用您发布的数据来显示数组。