Devo restituire più valori da una funzione ColdFusion in una funzione di callback ajax. Ecco quello che ho:Restituzione di due o più valori da una funzione
$('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');
}
});
});
Se io intercettare un errore del database, quindi il callback successo viene licenziato, e il risultato non è un numero (Si tratta, infatti, il testo del messaggio di errore). Ho bisogno che la funzione passi anche altri valori. Uno potrebbe essere la chiave principale della riga che ha causato l'errore. Un altro potrebbe essere il vecchio StateName, in modo che possa aggiornare il vecchio valore sullo schermo in modo che il client sappia assolutamente che il cambiamento non ha avuto effetto.
Immagino di infrangere la regola di atomicità qui e devo correggerla, perché sto usando il risultato sia come chiave primaria della riga che è stata aggiornata, o è il messaggio di errore se l'aggiornamento fallisce. Devo restituire sia la chiave primaria che il messaggio di errore.
Grazie Pascal Martin! OK, ho modificato il risultato in: {"STATEID": 101.0, "MSG": "Hello World"}, ma ora come posso risolvere result.msg? È risultato.DATA.msg o qualcosa del genere? –
Prego :-) Poiché stai usando jQuery, dovresti dare un'occhiata a http://api.jquery.com/jQuery.ajax/; l'opzione 'dataType' sembra interessante, dato che puoi impostarla su' json'; e, quindi, la callback 'success' dovrebbe ricevere direttamente un oggetto Javascript ;; quale mi piacerebbe qualcosa come 'result.STATEID',' result.MSG', ... –
Sì, stavo usando result.msg quando avrei dovuto usare result.MSG. Arg! Chi ha razionalizzato l'uso di un linguaggio informatico sensibile al maiuscolo e minuscolo? Non sanno che sono tutti gli 1 e gli 0 !! –