我需要使用客户端技术将大量数据从一个页面传递到另一个页面。它基本上是一个将显示在目标页面上的 id 列表。显然查询字符串不适合,因为可能有数千个 id,所以我想我可以使用 javascript 动态添加表单(method=GET),将 id 写入隐藏字段并将表单提交到目标页面。它似乎工作正常,但我想知道是否有更好的方法 - 这感觉有点hacky。
问问题
16261 次
3 回答
10
通过使用 HTML5 Storage API,您可以实现此目的...
使用 HTML5,网页可以在用户浏览器中本地存储数据。
早些时候,这是通过 cookie 完成的。但是,Web 存储更安全、更快速。数据不包含在每个服务器请求中,但仅在请求时使用。也可以在不影响网站性能的情况下存储大量数据。
数据以键/值对的形式存储,网页只能访问自己存储的数据。
localStorage
- 存储没有过期日期的数据sessionStorage
- 存储一个会话的数据
例子:
设置
window.localStorage.setItem("name",document.getElementById("name").value);
要得到
var name = window.localStorage.getItem("name");
有关更多参考,请参阅HTML5 存储
注意: Internet Explorer 8+、Firefox、Opera、Chrome 和 Safari 支持 Web 存储。
于 2012-11-22T09:18:02.167 回答
1
身份证的结果并没有那么多。如果 ID 是 GUID,则将有 Nx32 字节。你可以使用 jQuery post,它会触发一个 HTTP Post。
于 2012-11-22T09:11:43.693 回答
1
- 如果没有太多数据,您还可以在 URL 的末尾添加一个哈希值,并让新页面在加载时获取该值
- https://developer.mozilla.org/en-US/docs/Web/API/URL/hash
- 下面是一些演示这个的代码:
page-1.html
<html>
<head>
<meta charset="utf-8"/>
<title>Page 1</title>
</head>
<body>
<input id="txtMessage" type="text" value="Hello">
<button id="btnSend">Send</button>
<script>
btnSend.onclick = () => {
const message = txtMessage.value || "No message defined";
window.location = "page-2.html#" + message;
};
</script>
</body>
</html>
page-2.html
<html>
<head>
<meta charset="utf-8"/>
<title>Page 2</title>
</head>
<body>
<h2>The message is ...</h2>
<p id="output"></p>
<script>
let message = location.hash;
message = message.substring(1); // strip off leading #
message = decodeURI(message); // get rid of %20 for spaces
output.innerHTML = message;
</script>
</body>
</html>
于 2021-03-10T02:25:59.937 回答