我有大量来自服务器的行数据.如何在新页面(即重定向页面)上显示此数据
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)?
在第 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 页上,利用您发布的数据来显示阵列。
- 根据输入的数据重定向到页面的窗体
- Hapi-js重定向到另一个带有额外请求数据的路由
- 如何在 ajax 中使用 javascript 发送多个数据并将其重定向到欢迎页面
- 如何完成表单后使用 AJAX 重定向并在其他页面上显示数据
- Java EE servlet 页面重定向 + 向控制器发送数据
- 如何从发布方法获取数据后重定向
- 在数据库中插入数据后,无法重定向到 HTML 页面
- 从URL获取数据并阻止自动重定向(插件SDK Mozilla)
- 表单在每个页面中 - 仅在特定页面上处理它 - 如果当前不在页面上 - 重定向 - 否则 - 使用 AJAX 更新数据
- 我需要一个注册按钮,它可以将数据发送到mySQL服务器,也可以在单击时重定向
- 在nodejs中无需重定向即可将数据发送到模态
- 在重定向URL上使用HubSpot表单数据
- localStorage为用户注册如何在不丢失数据的情况下重定向
- 数据切换=“;下拉菜单”;激活路由重定向,而不是yeoman中的下拉菜单
- 使用 Javascript/jQuery 重定向时将 POST 数据发送到顶级 iframe
- jQuery - 使用帖子数据重定向
- 当响应 JSON 对象数据计数为零时,AJAX 成功回调函数重定向到错误回调
- 重定向302丢失POST数据
- 使用jQuery和Node.JS中的表单中的数据重定向到另一个网页
- 使用数据库中的数据重定向到新页面