ajax.dll中的[Ajax.AjaxMethod]的使用方法之二

大家知道,在普通的C#方法中可以通过Page.RegisterClientScriptBlock、Response.Write等方法实现客户端的Javascript代码,但是在AjaxMethod中,使用上面的方法却不能将Script代码加到客户端。如果我们想在AjaxMethod中alert出异常信息,或者alert出一些调试信息的话,很不方便。

使用下面的方法可以在AjaxMethod中alert出信息:  

我们可以把要alert出来的信息加到Ajax返回对象的error属性中,通过异常的方式抛出来,在客户端截获异常信息,并把它alert出来既可。

Ajax返回的对象常用的属性有两个:

l         value:返回对象的值;

l         error:错误信息。据文档说,error有两个属性:name和message,其中的name即异常类的全名,message是错误信息。

但是我没有试出message属性,使用message时,总报出“undefined”。我们可以取error中除name属性外的子串来得到错误信息。 例如: 要alert出C#类的AjaxMethod GetPlantCode(string strCompID)方法中出现的异常信息:

1.在AjaxMethod中抛出异常信息

     [Ajax.AjaxMethod]

    public string GetPlantCode(string strCompID)

     {

        string strPlant = "";

        SortedList list = null;

        try

         {

             list = person.getPlantByComp(strCompID);

         }

        catch (SqlException e)

         {

            throw new EPurchaseException(e); //抛出异常

     }

……

}

2.在javascript方法中调用改AjaxMethod

如果我们在initPlant中调用了Ajax方法GetPlantCode(string compID),而在GetPlantCode_CallBack方法中对Ajax方法的返回值进行处理,

        function initPlant()

         {

           var compID = form1.C2.value;

           PurchaseRequest_FillPR.GetPlantCode(compID, GetPlantCode_CallBack);

    }

3.在AjaxMethod返回对象的处理方法中截获错误信息并alert出来

        function GetPlantCode_CallBack(result)

         {

            if (result.error != null)

             {

                var error = result.error + "";

                 alert(error.substring(error.indexOf(" ") + 1, error.length));

//得到error中的错误信息

                return;

        }

……

}

注:AjaxPro中有error.Message方法可以直接提取出异常的Message,但是Ajax.NET中没有此功能,如果我们直接alert出error信息的话,它会连异常类和异常信息一起alert出来:

 

 

我们可以把error信息做一下处理,使之alert出error的错误信息:

          var error = result.error + "";  

//加个空串,把error对象转换为string类型,

//否则在error.substring(…)中会报javascript错误。

           alert(error.substring(name.length + 1, error.length));

//去掉前面的异常类名

这样alert出来的就只有异常类的message了。

转载于:https://www.cnblogs.com/brokge/archive/2012/09/19/2693678.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值