winch,
function ajaxFormSubmit(selector, settings) {
$(selector).submit(function(e) {
e.preventDefault();
var $form = $(this), $button = $form.find(':submit:focus');
if (!$button.length) return;
$.ajax($.extend({
url: $form.attr('action'),
type: $form.attr('method'),
data: $form.serialize() + '&' + $.param($button),
context: $form
}, settings));
});
}
ajaxFormSubmit('#myForm', {
success: function(data, status, xhr) {
// this == $form
var $form = this;
// ...
},
error: function(xhr, status, error) {
// this == $form
},
beforeSend: function(xhr, settings) {
// this == $form
}
});