1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| // Si l'on aime se compliquer la vie
// (traiter la valeur retournée en dehors de la transaction AJAX)
// il faut utiliser un objet différé (promesse).
var dfd = $.Deferred();
function calcule_port( id_four, montant ){
var jqXHR = $.post( "xhr_calcule_port.php", {
'id_four' : id_four,
'montant_cde' : montant
});
setTimeout( function(){
// Si l'objet différé existe dans l'état "attendre",
// alors exécute la méthode fail()
if ( jqXHR && jqXHR.state() === "pending" ){
jqXHR.abort();
}
}, 3000 ); // 3s
jqXHR.done( function( data, textStatus, jqXHR ){
// succès de la transaction, on doit traiter le contenu de data
//console.log( data, textStatus, jqXHR );
dfd.resolve( data );
// console.log(data); // affiche 35.00 le bon montant
});
jqXHR.fail( function( jqXHR, textStatus, errorThrown ){
// échec de la transaction, gérer la catastrophe
//console.log( jqXHR, textStatus, errorThrown );
dfd.reject( -1 );
});
jqXHR.always( function( jqXHR, textStatus ){
// la transaction est terminée
// nettoyage
// exécution d'un code dépendant
//console.log( jqXHR, textStatus );
})
}
function calcule_cde(){
var port = 0;
calcule_port( id_four, tot_cde);
dfd.then(
function( value ){
port = value;
console.log( "done, port = ", value );
// succès de la transaction AJAX, votre code dépendant de la valeur de port ici
},
function( value ){
port = value;
console.log( "fail, port = ", value );
// échec de la transaction AJAX, votre code dépendant de la valeur de port ici
}
);
// ici port vaudra toujours 0, car ce code sera exécuter avant la transaction AJAX
} |
Partager