自分用JavaScriptメモ・Ajax編
要prototype.js。
フォームの内容をPOSTでAjax通信したいとき。こんなのを作ってみた。
<script type="text/javascript"> <!-- function x(val) { if(confirm('send?')){ var send_input = document.createElement('input'); send_input.type = 'hidden'; send_input.name = val; $("thisForm").appendChild(send_input); new Ajax.Updater('my_result', '送信先URL', {method: 'post', postBody: form.serialize("thisForm")}); } } --> </script> <form id="thisForm"> <input type="text" name="test" /> <input type="button" value="テスト" onClick="x('abc')"> <input type="button" value="test" onClick="x('xyz')"> </form> <div id="my_result"></div>
こんな風にしておくと、ボタン毎に操作を切り替えることが出来る。勿論、その先は送り先の言語に依存するけど。ミソは、formタグ内でactionやmethodを指定する必要がないことか。そして、submitもいらない。色々試してみたら、どうもtype="button"ではsubmit時にデータを送信しないっぽい。なので、この関数が呼び出されたら、Ajaxの通信を始める前にフィールドを生成するようにしてみた。
一番参考になったのはここかも→http://issues.apache.org/struts/browse/WW-1167