web-dev-qa-db-fra.com

Arrêtez $ .ajax sur beforeSend

J'ai cet appel ajQuery jQuery:

$.ajax({
    url : 'my_action',
    dataType: 'script',
    beforeSend : function(){
        if(1 == 1) //just an example
        {
            return false
        }
    },
    complete: function(){
        console.log('DONE');
    }
});

Je veux arrêter l'appel ajax sous beforeSend si la condition retourne true mais return false n'arrête pas l'appel ajax.

Comment puis-je stop l'appel ajax sur le beforeSend?

======= MISE À JOUR =========

return false fonctionne aussi.

40
Mr_Nizzle
$.ajax({
    url : 'my_action',
    dataType: 'script',
    beforeSend : function(xhr, opts){
        if(1 == 1) //just an example
        {
            xhr.abort();
        }
    },
    complete: function(){
        console.log('DONE');
    }
});
73
thecodeparadox

La plupart des méthodes jQuery Ajax renvoient un objet XMLHttpRequest (ou l'équivalent), vous pouvez donc simplement utiliser abort ().

var test = $.ajax({
    url : 'my_action',
    dataType: 'script',
    beforeSend : function(){
        if(1 == 1) //just an example
        {
            test.abort();
            return false
        }
    },
    complete: function(){
        console.log('DONE');
    }
});
10
Farhan Ahmad
beforeSend:function(jqXHR,setting)
{
    // if(setting.url != "your url") jqXHR.abort();
    if(1 == 1) //just an example
    {
        jqXHR.abort();
    }
}
6
The Alpha

xhr.done(); ça marche pour moi

$.ajax({
    url : 'my_action',
    dataType: 'script',
    beforeSend : function(xhr){
        if(1 == 1) //just an example
        {
            return false
        };
        xhr.done(); //this works for me
    },
    complete: function(){
        console.log('DONE');
    }
});

http://api.jquery.com/jquery.ajax/

jqXHR.done(function( data, textStatus, jqXHR ) {});

Une construction alternative à l'option de rappel de réussite, reportez-vous à deferred.done() pour les détails d'implémentation.

4
Valmor Nascimento