8

我需要使用客户端技术将大量数据从一个页面传递到另一个页面。它基本上是一个将显示在目标页面上的 id 列表。显然查询字符串不适合,因为可能有数千个 id,所以我想我可以使用 javascript 动态添加表单(method=GET),将 id 写入隐藏字段并将表单提交到目标页面。它似乎工作正常,但我想知道是否有更好的方法 - 这感觉有点hacky。

4

3 回答 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

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 回答