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()
の様に値を取り出すことができる。