6

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

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

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

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

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

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

4

7 回答 7

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>
于 2008-10-19T18:36:20.083 回答
2

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

于 2008-10-19T15:32:07.880 回答
1

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

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

encodeUriComponent 一个字符串值

于 2008-10-19T15:47:08.597 回答
1

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

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

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

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

于 2008-10-19T15:48:26.723 回答
1

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

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

于 2008-10-19T19:12:45.080 回答
0

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

于 2008-10-19T15:50:18.013 回答
0

Since you are trying to do this in a Grails application you do have a choice of using Flash scope. This might not make any sense if you want to go directly from one HTML page to the next as the scope would be defined in a controller. If you do not need to do any sort of processing between requests, I'd suggest using a hidden form field to keep it simple.

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

于 2008-10-20T17:10:40.410 回答