我需要从 ajax 回调函数中的 ColdFusion 函数返回多个值。这是我得到的:
$('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');
}
});
});
如果我捕获数据库错误,则会触发成功回调,并且结果不是数字(实际上是错误消息的文本)。我需要该函数还传回其他值。其中之一可能是导致错误的行的主键。另一个可能是旧的 StateName,这样我就可以刷新屏幕上的旧值,以便客户端绝对确定他们的更改没有生效。
我想我在这里违反了原子性规则,需要解决这个问题,因为我使用结果作为已更新行的主键,或者作为更新失败时的错误消息。我需要返回主键和错误消息。
最佳答案
您的远程函数可能返回 **JSON 字符串**,我想包含一个对象。
它允许您在一个“值”内包含多个值。
JSON 是 Javascript 对象表示法,在 Javascript 中读取它非常容易 - 并且有许多库可以将多种语言的数据序列化为 JSON。
例如,这是一个 JSON 字符串:
{"status":1,"message":"this is a message","data":{"test":"plop","hello":"world"}}
这对应于具有 3 个属性的对象:
状态
消息
- 和
数据
;它本身是另一个对象,包含两个属性。
从 AJax 调用返回这种字符串应该不会太难——这是一个非常灵活且非常强大的系统。
关于jquery - 从函数返回两个或多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2602471/