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 完全対応 ありFirefox 完全対応 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 完全対応 あり
補足
完全対応 あり
補足
補足 XHR in Android 4.0 sends empty content for FormData with blob.
Chrome Android 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 ありSamsung Internet Android 完全対応 あり
FormData() constructorChrome 完全対応 7Edge 完全対応 ありFirefox 完全対応 4IE 完全対応 10Opera 完全対応 12Safari 完全対応 5WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 12Safari iOS ? Samsung Internet Android ?
Support of for...ofChrome 完全対応 50Edge 未対応 なしFirefox 完全対応 44IE ? Opera ? Safari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 44Opera Android ? Safari iOS ? Samsung Internet Android ?
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 完全対応 ありFirefox 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 完全対応 ありSamsung Internet Android 完全対応 あり
deleteChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 ありSafari 完全対応 11WebView Android 完全対応 ありChrome Android 完全対応 50Firefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり
entriesChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 44IE 未対応 なしOpera 完全対応 ありSafari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 44Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android ?
getChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 ありSafari 完全対応 11WebView Android 完全対応 ありChrome Android 完全対応 50Firefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり
getAllChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 ありSafari 完全対応 11WebView Android 完全対応 ありChrome Android 完全対応 50Firefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり
hasChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 完全対応 ありSafari 完全対応 11WebView Android 完全対応 ありChrome Android 完全対応 50Firefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり
keysChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 44IE ? Opera 完全対応 ありSafari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 44Opera Android ? Safari iOS ? Samsung Internet Android ?
setChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 39IE 未対応 なしOpera 未対応 なしSafari 完全対応 11WebView Android 完全対応 ありChrome Android 完全対応 50Firefox Android 完全対応 ありOpera Android 未対応 なしSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり
valuesChrome 完全対応 50Edge 完全対応 18Firefox 完全対応 44IE ? Opera ? Safari 完全対応 11WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 44Opera Android ? Safari iOS ? Samsung Internet Android ?
Available in workersChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 39IE 未対応 なしOpera 完全対応 ありSafari 未対応 なしWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android ?

凡例

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

関連文書