Je dois retourner plusieurs valeurs d'une fonction ColdFusion dans une fonction de rappel ajax. Voici ce que j'ai:Renvoyer plusieurs valeurs d'une fonction
$('input[name="StateName"]').live('change', function() {
var StateID = $(this).parents('tr').attr('id');
var StateName = $(this).val();
$.ajax({
url: 'Remote/State.cfc'
,type: "POST"
,data: {
'method': 'UpdateStateName'
,'StateID': StateID
,'StateName': StateName
}
,success: function(result){
if (isNaN(result)) {
$('#msg').text(result).addClass('err');
} else {
$('#' + result + ' input[name="StateName"]').addClass('changed');
};
}
,error: function(msg){
$('#msg').text('Connection error').addClass('err');
}
});
});
Si je piège une erreur de base de données, puis le rappel de succès est tiré, et le résultat est un numéro (Il est en fait, le texte du message d'erreur). J'ai besoin de la fonction pour également repasser d'autres valeurs. L'un pourrait être la clé primaire de la ligne qui a causé l'erreur. Un autre pourrait être l'ancien StateName, de sorte que je puisse actualiser l'ancienne valeur sur l'écran afin que le client sache absolument pour sûr que leur changement n'a pas pris effet. Je suppose que je casse ici la règle de l'atomicité et que je dois y remédier, car j'utilise le résultat comme clé primaire de la ligne qui a été mise à jour, ou le message d'erreur si la mise à jour échoue. Je dois retourner à la fois la clé primaire et le message d'erreur.
Merci Pascal Martin! OK, j'ai changé le résultat pour être: {"STATEID": 101.0, "MSG": "Bonjour tout le monde"}, mais maintenant comment adresse-je result.msg? Est-ce result.DATA.msg ou quelque chose? –
De rien :-) Comme vous utilisez jQuery, vous devriez jeter un oeil à http://api.jquery.com/jQuery.ajax/; l'option 'dataType' semble intéressante, car vous pouvez la définir sur' json'; et, alors, votre callback «succès» devrait recevoir directement un objet Javascript ;; ce qui veut dire quelque chose comme 'result.STATEID',' result.MSG', ... –
Ouais, j'utilisais result.msg alors que j'aurais dû utiliser result.MSG. Arg! Qui a rationalisé l'utilisation d'un langage informatique sensible à la casse? Ne savent-ils pas que tout est à 1 et à 0? –