繁体   English   中英

将变量从一个HTML页面传递到另一个HTML页面的最佳做法是什么?

[英]What is the best practice for passing variables from one HTML page to another?

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

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

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

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

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

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

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

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

这是一个很好的,但更好的是使用一些脚本语言,如JSP,PHP,ASP ....你可以使用简单的POST和GET方法。

最好的方法(imho)是将它包含在URL中

HREF = “HTTP://NewPage.htm VAR =值”;

encodeUriComponent是一个字符串值

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM