在使用Ajax.Pro的过程中,发现如果要在客户端做错误处理,就必须在每一个callback函数中进行判断错误对象是否为空,每个callback函数里就会出现类似这样的代码:
function callback(res)
{
   
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);
                }

            }

        }
这只是一个处理错误信息的函数,如果调用对象有自己的回调函数,那么在服务器请求正确的情况下,它还会调用对象本身的回调函数,下面来说一个获取服务器时间的简单调用示例:
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);
            }

        }
<input id="btnGetServerTime" type="button" value="GetServerTime" onclick="getServerTime.run()" />
posted on 2006-08-15 17:18  ideas  阅读(681)  评论(0编辑  收藏  举报