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

时间:2008-10-19 15:28:41

标签: javascript html grails dojo

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

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

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

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

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

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

7 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

encodeUriComponent是一个字符串值

答案 3 :(得分:1)

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

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

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

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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