HTML5のFormDataを使うとAjax使ってる時はパラメータ作るのがとても楽になるので重宝してます。
FormDataを使えば、ファイルアップロード処理だってAjaxでできるようになるので、見えないiframeにsubmitして...なんて面倒なことをしなくて済みます。
WebフレームワークにScalatraを使っている時にFormDataをjQueryでAjax通信しようとしてうまく行かなかったので、その備忘録を。
わかれば単純。
リクエストを受け取るServletにFileUploadSupportをmixinしておくだけ。
後は、いつものように、
var formData = new FormData();
//・・・ごにょごにょしてFormDataを作る
$.ajax({
url: 'リクエスト先URL',
type: 'POST',
dataType: 'json',
data: formData,
processData: false,
contentType: false
}) //・・・後はいつもの感じで
とやっておけば、ちゃんとリクエストパラメータが取れるようになります。ファイルアップロードをしなくてもFileUploadSupportをmixinする必要があるみたいです。
ちなみに、scalatra-formsも併せて使っていますが、マッピングも問題ないです。
ただし、multiParamsで取るような配列の要素
<input type="text" name="datas" value="abc">
<input type="text" name="datas" value="def">
<input type="text" name="datas" value="123">
を送るような時は注意が必要ですが、それは次回...