フォームを複数回送信するonClick
イベントを作成し、複数の選択フィールドで選択したアイテムを繰り返して1回ずつ送信します。どのようにしてonClickイベントにループを作成できますか?
ループをどのようにコードするのですか?
私はRuby on Railsで作業中で、remote_function()
を使用してajax呼び出しのJavaScriptを生成しています。
フォームを複数回送信するonClick
イベントを作成し、複数の選択フィールドで選択したアイテムを繰り返して1回ずつ送信します。どのようにしてonClickイベントにループを作成できますか?
ループをどのようにコードするのですか?
私はRuby on Railsで作業中で、remote_function()
を使用してajax呼び出しのJavaScriptを生成しています。
私はまだそれをコード化していないので私の素早い答えは、XMLHTTPRequestと単一の呼び出しのための特定のパラメータを使用してPOSTを作成する別の関数を作成することです。次に、選択した項目をループするときに機能するonClick()ハンドラ呼び出しの内部にあります。
私はダミーのHTMLページとjavascriptを使って概念の証明を行い、それをRoRで動作させる方法を見つけようとします。
また、RoRコントローラのループ条件を処理するのではなく、ブラウザから複数の呼び出しを試みているのはなぜですか?
JavaScriptを手作業で作成する必要があります。 Railsのジェネレータは、この複雑な処理を何もしません。
Prototype.jsは、あなたのためにほとんどすべてを行います。私の頭の上から、コードは次のようになります(未テスト)
<%= javascript_include_tag 'prototype' %>
<form id="my-form">
<input type="text" name="username" />
<select multiple="true" id="select-box">
<option value="1">First</option>
<option value="2">Second</option>
<option value="3">Third</option>
<option value="4">Fourth</option>
</select>
</form>
<script type="text/javascript" language="javascript">
submitFormMultipleTimes = function() {
$F('select-box').each(function(selectedItemValue){
new Ajax.Request('/somewhere?val='+selectedItemValue,
{method: 'POST', postBody: Form.serialize('my-form')});
});
}
</script>
<a href="#" onclick="submitFormMultipleTimes(); return false;">Clicky Clicky</a>
注:選択した項目の値を取得するためにPrototypeの$F()
メソッドを使用して
。複数選択ボックスの配列を返します
Ajax.Request
を使用してPOST
としてサーバーにデータを送信します。サーバーへの
が、これは単なるフォームからデータを取得し、要求の体でそれを固執するForm.serialize
を使用して、通常のフォームに
を提出するとまったく同じに見えます。あなたは、ブラウザDOMを変更している場合を除き
これは、あなたが正常に
フォームを送信した場合に送信されますでしょうまったく同じデータであり、私はこれをしたいと思う理由を考えることはできません。
複数のオブジェクト(フォームのネストされた複雑なオブジェクトも含む)からのデータを、1つのPOSTだけで返すことができるはずです(この場合は、 。
レールコードは、あなたが思いつくjavascriptよりもはるかに複雑ではなく、簡単に書くことができます(デバッグしやすくなります)。
ユーザーが選択した内容に応じてページの別の部分を更新する必要がある場合は、render:updateブロックでRJSを使用してDOMに複数の更新を行うことができます。
また、複数のPOSTSを使用する必要がある複数回のトリップではなく、1回のサーバーラウンドトリップの(大きな)利点があります。