6

私は Web アプリケーション プログラミングに比較的慣れていないので、この質問が誰にとっても基本的すぎないことを願っています。

さまざまな食料品の説明の行で満たされた dojox データグリッド (v1.2) を含む FORM を含む HTML ページを作成しました。ユーザーが興味のある項目を選択した後、[送信] ボタンをクリックします。

この時点で、アイテム ID 番号を JavaScript 変数として格納する JavaScript 関数を取得できますが、この ID を後続の HTML ページに渡す方法がわかりません。

ID を URL クエリ文字列パラメーターとして渡す必要がありますか? 他に良い方法はありますか?

編集: 全体的なプロセスはショッピング カートのようなものです。ユーザーはグリッドからアイテムを選択し、次のページで詳細を入力してチェックアウトします。

私は grails を使用しているため、これは GSP ページで発生していますが、現在は HTML しか含まれていません。

4

7 に答える 7

4

You could just use a hidden input field; that gets transmitted as part of the form.

<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

後続のページで ID のみが必要な場合は、ID をクエリ文字列パラメーターとして渡すことができます。

しかし、より多くの情報を中継する必要があり、さまざまなパラメーターをさまざまなページに渡したり、さまざまなページでさまざまなパラメーターのセットを維持しなければならない場合は、少し厄介になることがあります。このような場合は、フォームに隠しフィールドを保持し、各パラメーターを格納する引数オブジェクトを作成することをお勧めします。引数オブジェクトを JSON でシリアル化し、これを隠しフィールドに格納します。フォームをサーバーにポストします。次のページが読み込まれたら、オブジェクトを逆シリアル化し、必要な値を取得します。

于 2008-10-19T19:12:45.080 に答える
1

最良の方法(imho)は、URLに含めることです

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

encodeUriComponent 文字列値

于 2008-10-19T15:47:08.597 に答える
1

POST を使用して別のページに変数を送信する 1 つの方法は、後続のページへのリンクを、アクション属性がターゲット ページであるフォームの送信入力にすることです。持っている変数ごとに、属性タイプ「hidden」の入力を使用してこのフォームに含めることができ、ボタンのみが表示されます。

別のオプションは、基本的に現在の GET クエリを再設定する PHP のようなものを使用して、ページ上にリンクを動的に生成することです。

最後に、この情報は常に PHP の $_SESSION 配列に保存できるため、これらの変数をサイト ナビゲーションで継続的に渡すことを心配する必要はありません。

どちらを選択するかは、同じ変数を保持したいナビゲーション オプションがいくつあるかによって異なります。また、バックエンドをどれだけ安全にしたいか、および上級 Web ユーザーに開示したい量によっても異なります。

于 2008-10-19T15:48:26.723 に答える
0

HTMLページの使用に制限されていると仮定すると、クエリ文字列でIDを次のページに渡すのが最善の方法だと思います。次のページのクエリ文字列からその値を引き出すのは比較的簡単です。変数の受け渡しについてもう少しこっそりする必要がある場合 (または、変数を複数のページに保持する必要がある場合) は、Cookie を設定して、次のページでそれを取得することもできます。

于 2008-10-19T15:50:18.013 に答える
0

Grails アプリケーションでこれを行おうとしているので、Flash スコープを使用する選択肢があります。スコープはコントローラーで定義されるため、ある HTML ページから次のページに直接移動する場合、これは意味をなさない可能性があります。リクエスト間で何らかの処理を行う必要がない場合は、シンプルにするために非表示のフォーム フィールドを使用することをお勧めします。

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

于 2008-10-20T17:10:40.410 に答える