(function () { // support for uploadProgress callback var originalXHR = $.ajaxSettings.xhr; $.ajaxSetup({ xhr: function () { var myXHR = originalXHR(); if (myXHR.hasOwnProperty('upload') && this.hasOwnProperty('uploadProgress')) { myXHR.upload.addEventListener('progress', this.uploadProgress, false); } return myXHR; } }); // Example request function onUploadProgress(e) { console.log((e.loaded / e.total) * 100 | 0); } function onSuccess() { console.log('request over'); } var file = $('input[type="file"]')[0].files[0], myFormData = new FormData(); myFormData.append(file.name, file); $.ajax({ url: 'http://yoururl', timeout: 120000, method: 'post', processData: false, cache: false, contentType: false, data: myFormData, uploadProgress: onUploadProgress, success: onSuccess }); })();