(function($) { 'use strict'; $('form').on('click', 'button[type=submit]', function(evt) { var form = $(this.form).addClass('loading'); evt.preventDefault(); $.ajax(form.prop('action'), { data: form.find('textarea').serializeArray(), dataType: 'json', files: form.find(':file'), iframe: true, processData: false }).always(function() { form.removeClass('loading'); }).done(function(data) { console.log(data); $.each(data.files, function(idx, file) { $('
  • ' + '

    ' + '

    ,

    ' + '
  • ') .find('h4').text(file.originalFilename).end() .find('.size').text(formatSize(file.size)).end() .find('.mime').text(file.headers['content-type']).end() .find('.comment').text(data.comment || '').end() .appendTo('#filelist'); }); form.find(':file').val(''); }); }); function formatSize(size) { var units = ['B', 'KB', 'MB', 'GB'], idx = 0; if (!size) { return '0 bytes'; } while (size >= 1024) { size /= 1024; idx++; } return size.toFixed(0) + ' ' + units[idx]; } })(jQuery);