jQueryでのajaxの使い方をまとめていく

本記事では、jQueryのajaxの使い方をまとめていく。

基本的には使い方

jQueryのajaxは、基本的には以下の様な使い方をする。

$.ajax("/sample", {
    contentType: "application/json",
    dataType: "json",
    data: JSON.stringify(json_data),
    headers: [

    ]
}).done(function(data){
    console.log()
}).fail(function(){

})

以下は、それぞれの引数について解説する。

contentType

HTTP HeaderのContent-Typeを指定する。デフォルトでは、application/x-www-form-urlencodedが 指定される。これは、フォームで送信した時と同じ挙動をする。

例えば、jsonで送りたい場合はapplication/jsonを指定し、画像を送りたい場合はmultipart/form-dataを指定するのが望ましい。

dataType

サーバーから送られてくるデータ型を指定する。この値は多くの場合はjsonを指定することになる。

data

サーバーに送るデータを指定する。jsonで送る場合には、JSON.stringifyを使うこと。

headers

HTTP Headerを追加、指定ができる。この引数を使う目的の多くは、CSRFトークンを指定する場合になる。

Ajaxで画像やファイルを送りたい場合

Ajaxで画像やファイルを送りたい場合には、以下の事を行うと良い。

  • $("#file").get(0).files[0]でファイルの中身を取得
  • FormDataオブジェクトで送信するデータを作成
  • contentTypeをmultipart/form-dataに設定する

例としては、以下の様なコードを書くと良い。

var image = $("#img_input").get(0).files[0]
var title = $("#title").get(0).files[0]

var form_data = new FormData()
form_data.append("image", image)
form_data.append("title", title)

$.ajax("/sample", {
    contentType: "multipart/form-data",
    dataType: "json",
    data: form_data,
}).done(function(data){
    console.log(data)
}).fail(function(){
    console.log("failed")
})

上記の例では、バックエンド側では$request->input('title')とか$request->file("image")->get() の様に値を取り出すことができる。