Necesito devolver varios valores de una función ColdFusion en una función de devolución de llamada ajax. Esto es lo que tengo:Devolviendo dos o más valores desde una función
$('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 trampa de un error de base de datos, entonces la devolución de llamada de éxito se dispara, y el resultado no es un número (Es, de hecho, el texto del mensaje de error). Necesito la función para pasar también otros valores. Uno podría ser la clave principal de la fila que causó el error. Otro podría ser el antiguo StateName, de modo que pueda actualizar el valor anterior en la pantalla para que el cliente sepa absolutamente con certeza que su cambio no surtió efecto.
Supongo que estoy rompiendo la regla de atomicidad aquí y necesito solucionarlo, porque estoy utilizando el resultado como la clave principal de la fila que se actualizó, o es el mensaje de error si la actualización falla. Necesito devolver tanto la clave principal como el mensaje de error.
Gracias Pascal Martin! Bien, he cambiado el resultado para que sea: {"STATEID": 101.0, "MSG": "Hola mundo"}, pero ahora ¿cómo me dirijo a result.msg? ¿Es result.DATA.msg o algo así? –
De nada :-) Como está utilizando jQuery, debería echar un vistazo a http://api.jquery.com/jQuery.ajax/; la opción 'dataType' parece interesante, ya que puedes establecerla en' json'; y, entonces, su devolución de llamada 'success' debería recibir directamente un objeto Javascript ;; que me gustaría algo como 'result.STATEID',' result.MSG', ... –
Sí, estaba usando result.msg cuando debería haber estado usando result.MSG. Arg! ¿Quién racionalizó tener un lenguaje de computadora que distingue entre mayúsculas y minúsculas? ¡¿No saben que es todo 1 y 0? –