将变量从一个 HTML 页面传递到另一个页面的最佳实践是啥?

Posted

技术标签:

【中文标题】将变量从一个 HTML 页面传递到另一个页面的最佳实践是啥?【英文标题】:What is the best practice for passing variables from one HTML page to another?将变量从一个 HTML 页面传递到另一个页面的最佳实践是什么? 【发布时间】:2010-09-18 00:12:21 【问题描述】:

我对 Web 应用程序编程比较陌生,所以我希望这个问题对每个人来说都不是太基础。

我创建了一个 html 页面,其 FORM 包含一个 dojox 数据网格 (v1.2),其中填充了不同杂货项目的描述行。用户选择感兴趣的商品后,点击“提交”按钮。

此时,我可以获取 javascript 函数将项目 ID 号存储为 javascript 变量,但我不知道如何将此 ID 传递到后续 HTML 页面。

我应该只将 ID 作为 URL 查询字符串参数传递吗?还有其他更好的方法吗?

编辑:整个过程就像一个购物车。用户将从网格中选择项目,然后在下一页上,用户将填写一些详细信息,然后结帐。

我还应该提到我正在使用 grails,所以这发生在 GSP 页面中,但目前它只包含 HTML。

【问题讨论】:

你想要完成的整个过程是什么? 【参考方案1】:

您可以只使用隐藏的输入字段;作为表单的一部分传输。

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
      function updateSelectedItemId() 
        document.myForm.selectedItemId.value = 2;
        alert(document.myForm.selectedItemId.value);

       // For you this would place the selected item id in the hidden
       // field in stead of 2, and submit the form in stead of alert
      
    </script>

    Your grid comes here; it need not be in the form

    <form name="myForm">
      <input type="hidden" name="selectedItemId" value="XXX">
      The submit button must be in the form.
      <input type="button" value="changeSelectedItem" onClick="updateSelectedItemId()">
    </form>
  </body>
</html>

【讨论】:

忘了说,调用 document.myForm.submit() 的按钮也可能不在表单中。只有 type=submit 必须在表单本身中。 谢谢大家!我会采用这个解决方案,因为它运行良好、易于实施。【参考方案2】:

这很好,但更好的是使用一些脚本语言,例如 JSP、php、ASP....并且您可以使用简单的 POST 和 GET 方法。

【讨论】:

【参考方案3】:

最好的方法(恕我直言)是将其包含在 URL 中

href="http://NewPage.htm?var=value";

encodeUriComponent 一个字符串值

【讨论】:

【参考方案4】:

使用 POST 将变量发送到另一个页面的一种方法是使指向后续页面的链接成为表单上的提交输入,其中 action 属性是您的目标页面。对于您拥有的每个变量,您可以在此表单中包含使用“隐藏”属性类型的输入,仅使按钮可见。

另一种选择是在页面上动态生成链接,例如 PHP,您基本上可以重新填充当前的 GET 查询。

最后,您始终可以将此信息存储在 PHP $_SESSION 数组中,而不必担心通过站点导航不断传递这些变量。

您的选择将取决于您希望保留相同变量的导航选项的数量。这还取决于您希望后端的安全程度以及您希望向高级网络用户披露的数量。

【讨论】:

【参考方案5】:

如果您只需要后续页面上的 ID,则可以将 id 作为查询字符串参数传递。

但有时您需要传递更多信息并将各种参数传递到不同的页面,并且必须为不同的页面维护不同的参数集可能会有点麻烦。在这种情况下,我建议您在表单上保留一个隐藏字段并创建一个参数对象来存储您的每个参数。使用 JSON 序列化参数对象并将其存储在隐藏字段中。将表单发送回服务器。当下一页加载时,反序列化对象并检索您需要的值。

【讨论】:

【参考方案6】:

假设您仅限于使用 html 页面,我认为最好的方法是将查询字符串上的 id 传递到下一页。从下一页的查询字符串中拉回该值相对容易。如果您需要更隐蔽地传递变量(或者您需要变量持续存在多个页面),您还可以设置一个 cookie 并在下一页检索它。

【讨论】:

【参考方案7】:

由于您尝试在 Grails 应用程序中执行此操作,因此您可以选择使用 Flash 范围。如果您想直接从一个 HTML 页面转到下一个 HTML 页面,这可能没有任何意义,因为范围将在控制器中定义。如果您不需要在请求之间进行任何类型的处理,我建议您使用隐藏的表单字段来保持简单。

http://grails.org/Controllers+-+Controller+Scopes

【讨论】:

以上是关于将变量从一个 HTML 页面传递到另一个页面的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用nodejs(给1个特定用户)将变量从一个页面传递到另一个页面?

将变量从页面视图控制器传递到另一个

如何将变量从一个剃须刀页面传递到另一个?

Rails 将@variable 从一个显示页面传递到另一个显示页面

将变量从一个表传递到另一个 PHP 页面中的另一个 [重复]

通过使用 java 脚本,我如何将值从一个 html 页面传递到另一个 html 页面? [复制]