Skip to content

Instantly share code, notes, and snippets.

@quoidautre
Created April 5, 2012 07:35
Show Gist options
  • Select an option

  • Save quoidautre/2308776 to your computer and use it in GitHub Desktop.

Select an option

Save quoidautre/2308776 to your computer and use it in GitHub Desktop.
JS: Ajax pattern
var ajaxPattern = (function($){
return {
requestAjax: function(params){
var settings = $.extend({
url : '',
spinner : undefined,
form : '',
dataType : 'json',
cache : false,
type : 'POST',
data : '',
error : function(){},
success : function(){}
}, params);
$.ajax({
url : settings.url,
dataType : settings.dataType,
success : settings.success,
data : settings.data,
type : settings.type,
cache : settings.cache,
beforeSend: function(){
$(settings.spinner).fadeIn('slow');
disableForm(settings,true);
},
complete: function(response){
$(settings.spinner).fadeOut('slow');
disableForm(settings,false);
},
error: function( xhr, tStatus, err ) {
if( xhr.status === 401 || xhr.status === 403 ) {
//redirect action here
} else if ( xhr.status === 504 && !retries++ ) {
//make our recursive request
ajaxRequest();
} else {
$(document).trigger( "ui-flash-message",
[{ message: settings.errorMsg }] );
}
} // end error handler
});
}
};
})(jQuery);
function disableForm(forms,before) {
if (forms.form != '') {
if (before) {
$(forms.form).animate({opacity:'-=0.4'});
} else {
$(forms.form).animate({opacity:'+=0.6'});
}
$(forms.form + " input").removeAttr("disabled");
$(forms.form + " textarea").removeAttr("disabled");
$(forms.form + " select").removeAttr("disabled");
$(forms.form + " button").removeAttr("disabled");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment