3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ScalatraでFormDataを受け取る

Posted at

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">

を送るような時は注意が必要ですが、それは次回...

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?