37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
/*===============================================================================
|
|
************ Ajax submit for forms ************
|
|
===============================================================================*/
|
|
// Ajax submit on forms
|
|
$(document).on('submit change', 'form.ajax-submit, form.ajax-submit-onchange', function (e) {
|
|
var form = $(this);
|
|
if (e.type === 'change' && !form.hasClass('ajax-submit-onchange')) return;
|
|
if (e.type === 'submit') e.preventDefault();
|
|
|
|
var method = (form.attr('method') || 'GET').toUpperCase();
|
|
var contentType = form.prop('enctype') || form.attr('enctype');
|
|
|
|
var url = form.attr('action');
|
|
if (!url) return;
|
|
|
|
var data;
|
|
if (method === 'POST') data = new FormData(form[0]);
|
|
else data = $.serializeObject(app.formToJSON(form[0]));
|
|
|
|
var xhr = $.ajax({
|
|
method: method,
|
|
url: url,
|
|
contentType: contentType,
|
|
data: data,
|
|
beforeSend: function (xhr) {
|
|
form.trigger('beforeSubmit', {data:data, xhr: xhr});
|
|
},
|
|
error: function (xhr) {
|
|
form.trigger('submitError', {data:data, xhr: xhr});
|
|
},
|
|
success: function (data) {
|
|
form.trigger('submitted', {data: data, xhr: xhr});
|
|
}
|
|
});
|
|
});
|
|
|