【问题标题】:how to exchange variables between two HTML pages?如何在两个 HTML 页面之间交换变量?
【发布时间】:2011-04-13 01:15:48
【问题描述】:

我有两个 HTML 页面,example1.htmlexample2.html

如何使用查询字符串将变量从example1.html 传递到example2.html,并在不使用任何服务器端代码的情况下在example2.html 中检索该变量?

【问题讨论】:

标签: javascript html query-string href


【解决方案1】:

在example1.html中:

<a href='example2.html?myVar1=42'>a link</a>
<a href='example2.html?myVar1=43'>another link</a>

或根据需要使用 Javascript 生成链接。只需确保 ?varName=value 以某种方式到达 example2.html 的末尾即可。

然后,在 example2.html 中,您使用 Javascript 来解析 example2 附带的查询字符串。

为此,您可以尝试使用 Querystring。

// Adapted from examples on the Querystring homepage.
var qs = new Querystring();
var v1 = qs.get("myVar1");

或者,parent.document.URL 包含您所在页面的完整 URI。您可以提取:

parent.document.URL.substring(parent.document.URL.indexOf('?'), parent.document.URL.length);

并手动解析它以将您编码的变量提取到 URI 中。

编辑:忘记了“new Querystring()”的“new”部分。哎呀...

【讨论】:

  • 感谢您的回复,我尝试了第二种方法,您建议它工作正常,我写的就像 var a=parent.document.URL.substring(parent.document.URL.indexOf('myVar1= '), 父.document.URL.length);警报(a);
  • 但问题是我只需要将 42 存储到变量 a 中,当我编写 alert(a);它显示 myVar1=42 ,但我将如何只显示 42
  • 一目了然(我也是一个试图弄清楚这一点的初学者),示例代码的索引 0 就在“?”之前。将找到的索引保存到变量中。将字符串变量设置为变量的名称,以便您可以测量长度属性。然后,当调用您的案例的值时,它将是 var myString = "?myVar1=";然后警报(a + myString.Length);向右移动所需的字符数。
【解决方案2】:

HTML / HTTP 是无状态的,这意味着,你在前一页所做的/看到的,与当前页面完全脱节。问题是如何在前端的两个页面之间传递变量。 (由于 HTTP 是无状态的,因此每次加载页面时,它都会使用您在 JavaScript 中设置的任何初始值。您不能在 JS 中设置全局变量,并在再次加载页面后简单地保持该值。

有几种方法可以将值存储在另一个位置,以便在加载时使用 JavaScript 对其进行初始化)

1) - 简单地使用前端存储,它配备任何浏览器(Cookie、会话存储、本地存储 - 出于安全原因,可在一个域中使用 -> 这意味着您只能在此存储上为一个域保存数据,另一个域无法访问此数据)并将价值放在一个页面中并在其他页面中获取价值。 考虑到:

Cookie 将数据保存到您确定的时间,

会话存储会保存数据,直到浏览器默认选项卡关闭。

本地存储在浏览器完全关闭之前保存数据并在选项卡(页面)之间共享数据它存储没有过期日期的数据,并且只能通过 JavaScript 或清除浏览器缓存/本地存储的数据来清除 - 与 cookie 过期不同。

2) – 通过 Ajax 渲染函数生成元素时为其添加属性

<a href='example2.html?action=getAll&element=product&id=1'>a link</a>
<a href='example2.html?action=getAll&element=product&id=2'>another link</a>

-> 并在单击此元素后构造“ URL / ? action=getAll & element=product & id=1 “在第二个页面中,你可以解析这个 URL 并使用适当的参数调用适当的 Ajax。

【讨论】:

  • 这是最好的答案
【解决方案3】:

您可以使用 cookie 和 Querystring 来交换值。

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 2013-05-21
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多