Ajax 架构中回调函数的使用
Servlet中有如下方法:
ciqsciManager.saveBody(b);
现在可以在其参数中增加一个回调方法
有如下两种情况.
(1)
ciqsciManager.saveBody(b, function(backContent) {
insertRow(b); //在客户端页面上增加一行记录
alert("结果"+backContent);
}
);
也就是说,增加了如下参数
function(backContent) {
insertRow(b); //在客户端页面上增加一行记录
alert("结果"+backContent);
}
其中backContent是ciqsciManager.saveBody(b)的返回值,类型可以是Void,String,int等,也可以是List.
如果ciqsciManager.saveBody(b)执行成功,
则调用 上述function,执行js function : insertRow(b); 和 alert("结果"+backContent);
如果ciqsciManager.saveBody(b)执行失败,则不执行该js function,
另外执行失败后,还要判断ciqsciManager.saveBody(b)是否有抛出异常,
如果有,则把异常内容alert出来.
如果没有,则不错任何操作.
另外,我们还可以指定ciqsciManager.saveBody(b)执行失败后的操作
见第(2)种方法.
(2)
我们在ciqsciManager.saveBody(b)中插入一个对象作为最后一个参数:
该参数是个对象, 用{}括在一起.
其中有两个function,一个是callback,一个是errorHandler,
如果ciqsciManager.saveBody(b)执行成功,则执行callback,否则执行errorHandler.
其中errorHandler: function(e) 中的e是ciqsciManager.saveBody(b) 抛出的异常内容.
{
callback: function(del) {
insertRow(b);
},
errorHandler: function(e) {
alert("报错内容: "+e);
}
}
整个代码如下:
ciqsciManager.saveBody(b, {
callback: function(del) {
insertRow(b);
},
errorHandler: function(e) {
alert("报错内容: "+e);
}
});
回调函数的用处很大!
因为有时,我们需要根据后台操作的结果来做出不同的js代码响应.
举个例子:
我要向DB里插入一条记录,
如果插入成功了,我们就用js在客户端页面上也插入一条记录
如果插入失败了,就不做此操作,或者输出报错信息等.