Sorry for being that guy but AngularJS offers a simple and elegant solution.
Here is the code I use:
ngApp.controller('ngController', ['$upload',_x000D_
function($upload) {_x000D_
_x000D_
$scope.Upload = function($files, index) {_x000D_
for (var i = 0; i < $files.length; i++) {_x000D_
var file = $files[i];_x000D_
$scope.upload = $upload.upload({_x000D_
file: file,_x000D_
url: '/File/Upload',_x000D_
data: {_x000D_
id: 1 //some data you want to send along with the file,_x000D_
name: 'ABC' //some data you want to send along with the file,_x000D_
},_x000D_
_x000D_
}).progress(function(evt) {_x000D_
_x000D_
}).success(function(data, status, headers, config) {_x000D_
alert('Upload done');_x000D_
}_x000D_
})_x000D_
.error(function(message) {_x000D_
alert('Upload failed');_x000D_
});_x000D_
}_x000D_
};_x000D_
}]);
_x000D_
.Hidden {_x000D_
display: none_x000D_
}
_x000D_
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>_x000D_
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>_x000D_
_x000D_
<div data-ng-controller="ngController">_x000D_
<input type="button" value="Browse" onclick="$(this).next().click();" />_x000D_
<input type="file" ng-file-select="Upload($files, 1)" class="Hidden" />_x000D_
</div>
_x000D_
On the server side I have an MVC controller with an action the saves the files uploaded found in the Request.Files collection and returning a JsonResult.
If you use AngularJS try this out, if you don't... sorry mate :-)