3

私はJavaScriptを初めて使用し、次のことを行うための標準的な方法を見つけようとしています。

いくつかのチェックボックスとセレクターを備えたフォームがあります。チェックボックスが音楽のスタイルであり、セレクターが人の名前用であるとしましょう。

ユーザーが複数の人の音楽のスタイルを選択して、すべてのデータを含むフォームを送信できるようにしたいと思います。

たとえば、ユーザーは最初にクラシック、ジャズ、ロック、ポップをチェックして「ジョー」を選択し、次にジャズ、ポップ、カントリー、エレクトロニカを選択して「ジェーン」を選択します。したがって、「送信者」と「送信フォーム」には2つの異なるボタンが必要になります。

私はしたいと思います:

  1. フィードバックのために、名前と選択したスタイルのリストをフォームの下に入力します
  2. ユーザーがフォームを好きなだけ使用できるようにし、最後にすべてのデータを送信できるようにします

jqueryとJSONを使用することはこれに最適であると感じますが、これを行う方法を理解するためにどの検索用語を使用するかはわかりません。

重要な場合、フォームはPythonのDjangoビューによって処理されます。

4

2 に答える 2

1

これは、送信者にAJAXを使用することで実現できます。ワークフローは次のようになります。

  1. ユーザーはジョーとそれに対応するスタイルの音楽を選択します。
  2. ユーザーが「SubmitPerson」を押します。jquery ajax()このイベントでは、人物の名前(Joe)と選択した音楽のスタイルをJSONオブジェクトにエンコードし、AJAX( )リクエストを介してバックエンドスクリプトに渡します。
  3. サーバー側スクリプトは、必要な処理をすべて実行します。終了すると、AJAX呼び出しの成功ハンドラーが呼び出されます。この時点で、おそらく「Joe」を削除して、送信が成功したことをユーザーが認識し、Joeに再度送信しないようにすることができます。
  4. あなたのフォームの他のすべての人々のために洗って、すすぎ、繰り返してください。

PS-AJAXを介してバックエンドに情報を渡す場合、JSONとしてエンコードする必要はありません。標準のPOSTリクエストとして送信することもできます。JavascriptオブジェクトをJSONにエンコードするには、JSON.stringify()

上記はそれを行う1つの方法ですが、質問で尋ねたようには機能しません(データを収集し続ける-一度に送信する)。そのようにするには、ユーザーが[人を送信]をクリックするたびに、データをに追加します。 Javascriptオブジェクトですが、送信しないでください。送信されたデータは、JSオブジェクトに蓄積され続けます。

最後に、ユーザーが[フォームの送信]をクリックしたら、データを文字列化して送信します。

于 2012-04-15T17:24:44.697 に答える
0

django form-wizardを使用してみませんか..それで十分でしょうか?https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/

于 2012-04-18T21:45:35.533 に答える