2013年7月12日金曜日

input タグだけを FormData として送信したいとき

以前の記事で、<form> 内の <input type="file"> を Ajax で送信する方法を書きました。

    jQuery.ajax() でファイルを送る
    http://yokano-jp.blogspot.jp/2013/07/jqueryajax.html

FormData のコンストラクタには <form> を渡す必要があります。
基本的には <form> で <input> を囲んでおくべきですが、
<form> で囲まれていない <input> をどうしても送りたい場合には、
JavaScript の内部で <form> を作成して送る方法もあります。

HTML
<input id="file" type="file">

JavaScript
var form = $('<form></form>').append($('#file'));
var formdata = new FormData(form.get(0));
$.ajax('/upload', {
    method: 'POST',
    contentType: false,
    processData: false,
    data: formdata,
    dataType: 'json',
    error: function() {
        console.log('error');
    },
    success: function(data) {
        console.log('blobkey', data.blobkey);
    }
});

0 件のコメント:

コメントを投稿