Fractaliste
Fractaliste

Reputation: 5957

Ajax request, how to call an other function than "success" one's?

I use JQuery Ajax function :

$.ajax({
    url: ...,
    success: function (){
        ...
    },
    ...
});

I need to execute some code just before every call of the success function (but after the response has been received). I suppose that this success function is triggered like an event, so is there a way to make an other function call in place of success one's?

Upvotes: 0

Views: 325

Answers (4)

Fractaliste
Fractaliste

Reputation: 5957

I succeed in calling an other function just before success one by replacing $.ajax() by a custom function like :

function mYajax(options) {
    var temporaryVariable = options.success;

    options.success = function () {
        console.log('Custom')
        if (typeof temporaryVariable === 'function')
            temporaryVariable()
    };
    return $.ajax(options);
}

$('button').click(function () {
    mYajax({
        url: "/echo/json/",
        data: {
            foo: "bar"
        },
        success: function (data, textStatus, jqXHR) {
            console.log('succeed action');
        },

    });
});

Upvotes: 0

Johnny
Johnny

Reputation: 1143

Is beforeSend what you are looking for:

$.ajax({
    url: "...",
    beforeSend: function (x) {
        //do something before the the post/get
    }
}).done(function (data) {
    //done code
});

Upvotes: 0

tkone
tkone

Reputation: 22768

You can use the Global Ajax Event Handlers methods to do this.

Sounds like you might want to use AjaxComplete:

$(document).ajaxComplete(function(){
    // do something here when ajax calls complete
});

Be warned -- this will occur for EVERY jQuery ajax call on the page...

Upvotes: 1

kmera
kmera

Reputation: 1745

You could also call that other function right at the biginning of done:

$.ajax({
    url: ...,
    done: function (){
        someOtherFunction();
    },
    ...
});

This should pretty much accomplish what you described in your question.

Upvotes: 0

Related Questions