jQuery AJAX custom function and custom callback?
EDIT:
Got a recent upvote for this and I feel compelled to state that I would no longer do it this way. $.ajax
returns a promise
so you can do pretty much what i just did here in a more consistent and robust way using the promise directly.
function customRequest(u,d) { var promise = $.ajax({ type: 'post', data: d, url: u }) .done(function (responseData, status, xhr) { // preconfigured logic for success }) .fail(function (xhr, status, err) { //predetermined logic for unsuccessful request }); return promise;}
Then usage looks like:
// using `done` which will add the callback to the stack // to be run when the promise is resolvedcustomRequest('whatever.php', {'somekey': 'somevalue'}).done(function (data) { var n = 1, m = 2; alert(m + n + data);});// using fail which will add the callback to the stack // to be run when the promise is rejectedcustomRequest('whatever.php', {'somekey': 'somevalue'}).fail(function (xhr, status, err) { console.log(status, err);});// using then which will add callabcks to the // success AND failure stacks respectively when // the request is resolved/rejectedcustomRequest('whatever.php', {'somekey': 'somevalue'}).then( function (data) { var n = 1, m = 2; alert(m + n + data); }, function (xhr, status, err) { console.log(status, err); });
Sure i do this all the time. You can either execute the callback within the actual success callack or you can assign the callback as the success callback:
function customRequest(u,d,callback) { $.ajax({ type: "post", url: u, data:d, success: function(data) { console.log(data); // predefined logic if any if(typeof callback == 'function') { callback(data); } } });}
Usage would look something like:
customRequest('whatever.php', {'somekey': 'somevalue'}, function (data) { var n = 1, m = 2; alert(m + n + data);});
function customAjax(u, d, theCallbackStuff) { $.ajax({ type: "post", url: u, data: d, success: theCallbackStuff }); }customAjax(url, data, function(data){//do something});
On this note, you can pass a complete function as a callback to this:
function customRequest(u,d,callback) { $.ajax({ type: "post", url: u, data:d, success: function(data) { console.log(data); // predefined logic if any if(typeof callback == 'function') { callback(data); } } });}// Then call it as follows:function initiator() { customRequest( '/url/to/post', 'param1=val', function() { alert( 'complete' ); })}
Simply passing it as an anonymous function will work too.. Just for the sake of showing :)