FormData

FormData インターフェイスは、XMLHttpRequest.send() メソッドを用いることで簡単に送信が可能な、フォームフィールドおよびそれらの値から表現されるキーと値のペアのセットを簡単に構築する手段を提供します。これは、エンコーディングタイプを "multipart/form-data" に設定した場合にフォームが使用するものと同じ形式を使用します。

FormData を実装したオブジェクトは、entries() の代わりに for...of 構造の内部で直接使用できます。for (var p of myFormData)for (var p of myFormData.entries()) と等価です。

注記: この機能は Web Workers で使用できます。

コンストラクタ

FormData()
新しい FormData オブジェクトを作成します。

メソッド

FormData.append()
FormData オブジェクト内の既存のキーに新たな値を追加するか、キーが存在しない場合はキーを追加します。
FormData.delete()
FormData オブジェクトからキーと値のペアを削除します。
FormData.entries()
オブジェクトに含まれているすべてのキーと値のペアを走査できるようにするため、iterator を返します。
FormData.get()
FormData オブジェクトから、指定したキーに関連付けられた最初の値を返します。
FormData.getAll()
FormData から、指定したキーに関連付けられたすべての値の配列を返します。
FormData.has()
FormData オブジェクトがあるキーと値のペアを持っているかを示す真偽値を返します。
FormData.keys()
オブジェクト内に存在するキーと値のペアから、すべてのキーを走査できるようにするための iterator を返します。
FormData.set()
FormData オブジェクト内の既存のキーに新たな値を設定するか、キーが存在しない場合はキーと値のペアを追加します。
FormData.values()
オブジェクト内に存在するキーと値のペアから、すべての値を走査できるようにするための iterator を返します。

仕様

仕様書 策定状況 コメント
XMLHttpRequest
FormData の定義
現行の標準 XHR 仕様書で FormData を定義

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
FormDataChrome 完全対応 7Edge 完全対応 12Firefox 完全対応 4
補足
完全対応 4
補足
補足 Prior to Firefox 7, specifying a Blob as the data to append to the object, the filename reported in the Content-Disposition HTTP header was an empty string, resulting in errors on some servers. Starting with Firefox 7, the filename blob is sent.
IE 完全対応 10Opera 完全対応 12Safari 完全対応 5WebView Android 完全対応 ≤37
補足
完全対応 ≤37
補足
補足 XHR in Android 4.0 sends empty content for FormData with blob.
Chrome Android 完全対応 18Firefox Android 完全対応 4
補足
完全対応 4
補足
補足 Prior to Firefox 7, specifying a Blob as the data to append to the object, the filename reported in the Content-Disposition HTTP header was an empty string, resulting in errors on some servers. Starting with Firefox 7, the filename blob is sent.
Opera Android 完全対応 12Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0
FormData() constructorChrome 完全対応 7Edge 完全対応 12Firefox 完全対応 4IE 完全対応 10Opera 完全対応 12Safari 完全対応 5WebView Android 完全対応 ≤37Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0
Support of for...ofChrome 完全対応 50Edge 完全対応 79Firefox 完全対応 44IE ? Opera ? Safari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 44Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 5.0
appendChrome 完全対応 7Edge 完全対応 12Firefox 完全対応 4
補足
完全対応 4
補足
補足 Prior to Firefox 7, specifying a Blob as the data to append to the object, the filename reported in the Content-Disposition HTTP header was an empty string, resulting in errors on some servers. Starting with Firefox 7, the filename blob is sent.
IE 完全対応 10
補足
完全対応 10
補足
補足 With the "Include local directory pass when uploading files to a server" option enabled, IE will change the filename inside the Blob on the fly. To have direct control of the sent filename, the developer should send the filename as the third parameter value, i.e. formData.append(name, value, filename).
Opera 完全対応 12Safari 完全対応 5WebView Android 完全対応 3
補足
完全対応 3
補足
補足 XHR in Android 4.0 sends empty content for FormData with blob.
Chrome Android 完全対応 18Firefox Android 完全対応 4
補足
完全対応 4
補足
補足 Prior to Firefox 7, specifying a Blob as the data to append to the object, the filename reported in the Content-Disposition HTTP header was an empty string, resulting in errors on some servers. Starting with Firefox 7, the filename blob is sent.
Opera Android 完全対応 12Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0
deleteChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 ありSafari 完全対応 11WebView Android 完全対応 ありChrome Android 完全対応 50Firefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
entriesChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 44IE 未対応 なしOpera 完全対応 37Safari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 44Opera Android 完全対応 37Safari iOS 完全対応 11Samsung Internet Android 完全対応 5.0
getChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 37Safari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 39Opera Android 完全対応 37Safari iOS 完全対応 11Samsung Internet Android 完全対応 5.0
getAllChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 37Safari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 39Opera Android 完全対応 37Safari iOS 完全対応 11Samsung Internet Android 完全対応 5.0
hasChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 ありSafari 完全対応 11WebView Android 完全対応 ありChrome Android 完全対応 50Firefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
keysChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 44IE 未対応 なしOpera 完全対応 ありSafari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 44Opera Android ? Safari iOS 完全対応 11Samsung Internet Android 完全対応 5.0
setChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 37Safari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 39Opera Android 完全対応 37Safari iOS 完全対応 11Samsung Internet Android 完全対応 5.0
valuesChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 44IE 未対応 なしOpera 完全対応 37Safari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 44Opera Android 完全対応 37Safari iOS 完全対応 11Samsung Internet Android 完全対応 5.0
Available in workersChrome 完全対応 ありEdge 完全対応 ≤18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 ありSafari 未対応 なしWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。

関連文書