首页 >web前端 >js教程 >如何在无状态 HTTP 环境中跨页面加载保留变量?

如何在无状态 HTTP 环境中跨页面加载保留变量?

Barbara Streisand
Barbara Streisand原创
2024-12-24 09:39:13397浏览

How Can I Persist Variables Across Page Loads in a Stateless HTTP Environment?

在页面加载之间保留变量

HTTP 是无状态的,跨页面重新加载保留值需要外部存储。以下是克服此限制的方法:

查询字符串

通过 GET 提交表单时,查询字符串 (?parameter=value) 携带表单字段数据。相应地设置隐藏字段的值:

<form method="GET">
    <input type="hidden" name="clicked" value="true" />
    <input type="submit" />
</form>

页面加载时,提取查询参数:

function getParameterByName(name) {
    var regex = new RegExp("[\?&amp;]" + name + "=([^&amp;#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

var clicked = getParameterByName('clicked');

Web Storage

HTML5 提供Web 存储,允许基于浏览器的数据存储。 SessionStorage 仅在当前浏览会话期间存储数据:

sessionStorage.setItem('clicked', 'true');

页面加载时,检索存储的值:

var clicked = sessionStorage.getItem('clicked');

Cookies

Cookie 主要用于服务器端数据存储,但也可用于客户端存储。 jQuery 简化了 cookie 管理:

$.cookie('clicked', 'true', {expires: 1}); // expires in 1 day

要在页面加载时读取 cookie:

var clicked = $.cookie('clicked');

请记住在不再需要时取消设置 cookie:

$.cookie('clicked', null);

Window.name

虽然不是推荐,window.name 可以跨页面刷新甚至跨域存储字符串:

window.name = "my value";

页面加载时,访问存储的值:

var value = window.name;

以上是如何在无状态 HTTP 环境中跨页面加载保留变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn