<form action="http://example.com/cgi-bin/upload.cgi" method="post" enctype="multipart/form-data" >
<textarea name="my_textarea"> 値 </textarea> <br>
<input type="text" name="my_text" value="値"> <br>
<input type="hidden" name="my_hidden" value="値"> <br>
<input type="file" name="my_file"> <br>
<input type="submit" value="送信">
</form>
■ FormData クラスの主な機能
<FORM> 要素内に存在する、すべてのコントロール要素の name と value 属性値を抽出し、1つの FormData オブジェクトにまとめる事ができます。
XMLHttpRequest クラスを使うと、FormData オブジェクトを外部に送信する事ができます。
■その他の注意点
FormData オブジェクトを使って、元の <FORM> 要素を変化させる事はできません。
FormData オブジェクトから、データを取り出す事はできません。
FormData オブジェクトに、データを追加する事はできます。
第01引数(略可) | HTMLFormElement | フォーム要素を指定 |
戻り値 | FormData | FormData |
<html>
<body>
<form id="my_form" action="http://example.com/cgi-bin/upload.cgi" method="post" enctype="multipart/form-data" >
<textarea name="my_textarea">!! MY VALUE A !!</textarea> <br>
<input type="text" name="my_text" value="!! MY VALUE B !!"> <br>
<input type="hidden" name="my_hidden" value="!! MY VALUE C !!"> <br>
<input type="file" name="my_file"> <br>
<input type="submit" value="送信">
</form>
<script type="text/javascript">
<!--
// 匿名関数を即時実行
(function(){
// ------------------------------------------------------------
// FormData に対応していない
// ------------------------------------------------------------
if(!(window.FormData)) return;
// ------------------------------------------------------------
// フォーム要素を取得する
// ------------------------------------------------------------
// id 属性が、"my_form" であるエレメントを取得
var form = document.getElementById("my_form");
// ------------------------------------------------------------
// サブミット直前に実行されるイベント
// ------------------------------------------------------------
form.addEventListener("submit" , function(e){
// ------------------------------------------------------------
// デフォルトの動作をキャンセル(フォームの送信を中止)
// ------------------------------------------------------------
e.preventDefault();
// ------------------------------------------------------------
// FormData オブジェクトを作成する
// ------------------------------------------------------------
var form_data = new FormData(form);
// 出力テスト
console.log(form_data);
// ------------------------------------------------------------
// XMLHttpRequest を使った通信
// ------------------------------------------------------------
// XMLHttpRequest オブジェクトを作成
//var xhr = new XMLHttpRequest();
// 「POST メソッド」「接続先 URL」を指定
//xhr.open("POST" , form.action);
// 送信データに FormData を指定、XHR 通信を開始する
//xhr.send(form_data);
});
})();
//-->
</script>
</body>
</html>
上に戻る
第01引数 | String | name 属性値を文字列で指定。 |
第02引数 | String | value 属性値を文字列で指定。 |
戻り値 | Void | なし |
第01引数 | String | 名前を文字列で指定。 |
第02引数 | Blob | Blob や File オブジェクトを指定。 |
第03引数(略可) | String | 第02引数で指定した Blob オブジェクトのファイル名を指定。 |
戻り値 | Void | なし |
// ------------------------------------------------------------
// FormData オブジェクトを作成する
// ------------------------------------------------------------
var form_data = new FormData();
// ------------------------------------------------------------
// name と value を指定してデータを追加する
// ------------------------------------------------------------
form_data.append("aaa","value_a");
form_data.append("bbb","value_b");
form_data.append("ccc","value_c");
ファイルのドラッグアンドドロップを検出して、FormData オブジェクトにデータを追加する
<html>
<body>
<div id="bbb" style="width:400px; height:300px; background:#ccf;" ></div>
<script type="text/javascript">
<!--
// 匿名関数を即時実行
(function(){
// ------------------------------------------------------------
// FormData に対応していない
// ------------------------------------------------------------
if(!(window.FormData)) return;
// ------------------------------------------------------------
// "bbb" というID属性のエレメントを取得する
// ------------------------------------------------------------
var element = document.getElementById("bbb");
// ------------------------------------------------------------
// FormData オブジェクトを作成する
// ------------------------------------------------------------
var form_data = new FormData();
// ------------------------------------------------------------
// ドラッグ操作中に実行されるイベント(マウスカーソルが要素内に滞在中)
// ------------------------------------------------------------
element.addEventListener("dragover" , function (e){
// ドロップを許可し受け入れを表明
e.preventDefault();
});
// ------------------------------------------------------------
// ドロップ時に実行されるイベント
// ------------------------------------------------------------
element.addEventListener("drop" , function (e){
// ------------------------------------------------------------
// DataTransfer オブジェクトを取得する
// ------------------------------------------------------------
var data_transfer = e.dataTransfer;
// ------------------------------------------------------------
// ファイルを取得する(HTML5 世代)
// ------------------------------------------------------------
var file_list = data_transfer.files;
if(file_list){
var i;
var num = file_list.length;
for(i=0;i < num;i++){
// File オブジェクトを取得
var file = file_list[i];
// ファイル名を取得
var file_name = file.name;
// name と File オブジェクトを指定してデータを追加する
form_data.append(file_name,file);
// 出力テスト
console.log(file_name);
}
}
// ------------------------------------------------------------
// デフォルトのドロップ機能を無効化する
// ------------------------------------------------------------
e.preventDefault();
});
})();
//-->
</script>
</body>
</html>
上に戻る
// 匿名関数を即時実行
(function(){
// ------------------------------------------------------------
// FormData に対応していない
// ------------------------------------------------------------
if(!(window.FormData)) return;
// ------------------------------------------------------------
// FormData オブジェクトを作成する
// ------------------------------------------------------------
var form_data = new FormData();
// ------------------------------------------------------------
// 名前と値を指定してデータを追加する
// ------------------------------------------------------------
form_data.append("aaa" , "value_a");
form_data.append("bbb" , "value_b");
form_data.append("ccc" , "value_c");
// ------------------------------------------------------------
// XMLHttpRequest オブジェクトを作成
// ------------------------------------------------------------
var xhr = new XMLHttpRequest();
// ------------------------------------------------------------
// 「POST メソッド」「接続先 URL」を指定
// ------------------------------------------------------------
xhr.open("POST" , "http://example.com/cgi-bin/upload.cgi");
// ------------------------------------------------------------
// 送信データに FormData を指定、XHR 通信を開始する
// ------------------------------------------------------------
xhr.send(form_data);
})();
上に戻る
前のページに戻る
メニュー
トップ
更新履歴
Flash ゲーム
今すぐプレイ
Flash ムービー
今すぐプレイ
JavaScript
プログラミング講座
Adobe AIR
プログラミング講座
ActionScript3.0
ゲームプログラミング講座
ActionScript1.0
ゲームプログラミング講座
Flash 拡張機能
今すぐダウンロード
Browser 拡張機能
今すぐダウンロード
Author
atom /
twitter
2002-2018 / 解像度1024×768以上 / IE8.0以上推奨 / by Hakuhin |