Буквально позавчера написал свой велосипед для ajax-загрузки:
(function(e) {
$('#ajax-upload').on('change', function() {
var url = $(this).attr('data-action');
var fd = new FormData();
console.log(this.files);
fd.append("UploadForm[file]", this.files[0]);
$.ajax({
url: url,
type: "POST",
data: fd,
processData: false,
contentType: false,
dataType: 'json',
success: function(response) {
if (response.success) {
$('#post-image_url').val(response.url);
$('img#thumb').attr('src', response.url);
}
}
});
});
}());
Если нужны будут пояснения, то обращайся