在使用Ajax.Pro的过程中,发现如果要在客户端做错误处理,就必须在每一个callback函数中进行判断错误对象是否为空,每个callback函数里就会出现类似这样的代码:
function
callback(res)
{
if(res.error)
{
alert(res.error.Message);
}
else
{
alert(res.value);
}
}
这样用起来总感觉有点不爽,所以写了个通用的处理错误信息的方法。
{
if(res.error)
{
alert(res.error.Message);
}
else
{
alert(res.value);
}
}
function
callback(res)
{
if(res.error)
{
var errorMessage = null;
if(res.context && res.errorMessage)
{
errorMessage = res.context.errorMessage + ":" + res.error.Message;
}
else
{
errorMessage = res.error.Message;
}
alert(errorMessage);
}
else
{
if(res.context)
{
var objCallback = null;
if(Function.isFunction(res.context))
{
objCallback = res.context;
}
else if(res.context.callback)
{
objCallback = res.context.callback.bind(res.context);
}
if(objCallback != null) objCallback(res);
}
}
}
这只是一个处理错误信息的函数,如果调用对象有自己的回调函数,那么在服务器请求正确的情况下,它还会调用对象本身的回调函数,下面来说一个获取服务器时间的简单调用示例:
{
if(res.error)
{
var errorMessage = null;
if(res.context && res.errorMessage)
{
errorMessage = res.context.errorMessage + ":" + res.error.Message;
}
else
{
errorMessage = res.error.Message;
}
alert(errorMessage);
}
else
{
if(res.context)
{
var objCallback = null;
if(Function.isFunction(res.context))
{
objCallback = res.context;
}
else if(res.context.callback)
{
objCallback = res.context.callback.bind(res.context);
}
if(objCallback != null) objCallback(res);
}
}
}
var
getServerTime
=
{
errorMessage : "获取服务器时间出错",
eventObject : null,
run : function()
{
if(this.eventObject == null)
this.eventObject = event.srcElement;
MyTest.GetServerTime(callback,this);//调用服务器方法
},
callback : function(res)
{
this.eventObject.value = res.value;
setTimeout(this.run.bind(this),1000);
}
}
errorMessage : "获取服务器时间出错",
eventObject : null,
run : function()
{
if(this.eventObject == null)
this.eventObject = event.srcElement;
MyTest.GetServerTime(callback,this);//调用服务器方法
},
callback : function(res)
{
this.eventObject.value = res.value;
setTimeout(this.run.bind(this),1000);
}
}
<
input
id
="btnGetServerTime"
type
="button"
value
="GetServerTime"
onclick
="getServerTime.run()"
/>