优化AJAX提交到Handler的ProcessRequest方法

背景:

               上周搬到新组开发一个微信端的项目,发现这里前台页面部分都是ajax提交到handler,然后handler的ProcessRequest方法接收提交过来的参数,通过参数中的type选择要执行的方法(这里就是访问数据库的操作和一些业务逻辑的调用,分页等等),处理完成之后返回json串到ajax的success方法,然后显示。

        其实ajax提交到handler和提交到后台感觉没多大区别,百度了下,感觉handler是后台程序的简化版,执行更快。

        ok,今天说的其实是一个比较细节的问题,先看一段代码:

       

 public void ProcessRequest(HttpContext context)
        {
            if (context.Request["type"] != null)
            {
                context.Response.ContentType = "text/plain";
                context.Response.Buffer = true;
                context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
                context.Response.AddHeader("pragma", "no-cache");
                context.Response.AddHeader("cache-control", "");
                context.Response.CacheControl = "no-cache";

                string type = context.Request["type"].ToString();
                switch (type)
                {
                    case "getsellerlist":
                        GetSellerList(context);
                        break;
                    case "getsellerinfo":
                        GetSellerInfo(context);
                        break;
                    case "getsellernormalinfo":
                        GetSellerNormalInfo(context);
                        break;
                    case "getsellernormallist":
                        GetSellerNormalList(context);
                        break;
                    case "getsellerpropertylist":
                        GetSellerPropertyLity(context);
                        break;
                    case "getscopelist":
                        GetScopeList(context);
                        break;
                    case "imgupload":
                        ImgUpload(context);
                        break;
                    case "chefupload":
                        ChefUpload(context);
                        break;
                    case "sellerupload":
                        SellerUpload(context);
                        break;
                    case "storeupload":
                        StoreUpload(context);
                        break;

                    case"LoadSellerDataByPartner":
                        LoadSellerDataByPartner(context);
                        break;

                }
            }
        }

               上面这段代码是handler处理程序的入口,从这里根据type选择要执行哪个方法。但是一般,一个handler要处理的一个页面上的很多事件,我每加一个方法,就要去修改switch..case部分,这是很违反开放封闭原则的,理想情况下是这样,我每加一个方法,原来写好的程序段都是不可以被修改的,但是可以在原来的基础上增加。

        所以,我们这样:

            

 #region 反射取出这里的switch_case的方法,但是要求传过来的type要跟方法名称完全一致

                     System.Reflection.MethodInfo ChosedMethod = this.GetType().GetMethod(type);//利用反射根据传进来的值选取要被执行的方法

                     if (ChosedMethod != null)
                           {
                                ChosedMethod.Invoke(this, new object[] { context });
                           }

                        }

#endregion

        我们在程序里面通过反射动态加载方法,超级方便哎~~~以后再也不用超长的switch...case了。

        小结:

                最近在新公司修bug的时候,看到那些像屎一样的代码感觉编写可读性强的代码是非常有必要的,代码应该写出来让别人看着像工艺品,不应该是满眼看去一坨一坨的。。。。

 

时间: 2024-12-31 11:19:35

优化AJAX提交到Handler的ProcessRequest方法的相关文章

jquery实现ajax提交form表单的方法总结

 本篇文章主要是对jquery实现ajax提交form表单的方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 方法一:     代码如下: function AddHandlingFeeToRefund()           {             var AjaxURL= "../OrderManagement/AjaxModifyOrderService.aspx";                    alert($('#formAddHandlingFe

Jquery中ajax提交表单几种方法(get、post两种方法)_AJAX相关

在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的方法.$get方式提交表单get() 方法通过远程HTTP ,下面我来介绍两个提交表单数据的方法. $get方式提交表单 get() 方法通过远程 HTTP GET 请求载入信息 格式 $(selector).get(url,data,success(response,status,xhr),dataType

IE下Ajax提交乱码的快速解决方法_AJAX相关

哈哈,试了这么多还是encodeURIComponent管用啊!!!! 在汉字的位置加个保护措施:encodeURIComponent(parentid) function loadCity(parentid) { var city = '${hotel.city}'; $.ajax({ url: './listCity.jspx?prov='+ encodeURIComponent(parentid), type: 'GET', dataType: 'JSON', timeout: 5000,

IE下Ajax提交乱码的快速解决方法

哈哈,试了这么多还是encodeURIComponent管用啊!!!! 在汉字的位置加个保护措施:encodeURIComponent(parentid) function loadCity(parentid) { var city = '${hotel.city}'; $.ajax({ url: './listCity.jspx?prov='+ encodeURIComponent(parentid), type: 'GET', dataType: 'JSON', timeout: 5000,

Jquery中ajax提交表单几种方法(get、post两种方法)

在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的方法.$get方式提交表单get() 方法通过远程HTTP ,下面我来介绍两个提交表单数据的方法. $get方式提交表单 get() 方法通过远程 HTTP GET 请求载入信息 格式 $(selector).get(url,data,success(response,status,xhr),dataType

jquery实现ajax提交form表单的方法总结_jquery

方法一: 复制代码 代码如下: function AddHandlingFeeToRefund()         {            var AjaxURL= "../OrderManagement/AjaxModifyOrderService.aspx";                   alert($('#formAddHandlingFee').serialize());                $.ajax({                    type:

Jquery ajax提交表单几种方法

在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$('#表单ID').serialize(). 详细如下介绍: 一.$get方式提交表单 get() 方法通过远程 HTTP GET 请求载入信息 格式 $(selector).get(url,data,success(response,status,xhr),dataType) 实例 使用 AJAX 的 GET 请求来改变 div 元素的文本: $.get('login.php', {

Jquery ajax提交表单几种方法详解

$get方式提交表单 get() 方法通过远程 HTTP GET 请求载入信息 格式 $(selector).get(url,data,success(response,status,xhr),dataType) 请求 test.php 网页,传送2个参数,忽略返回值: $.get("test.php", { name: "John", time: "2pm" } ); 显示 test.php 返回值(HTML 或 XML,取决于返回值):  代

AJAX提交表单数据实例分析_AJAX相关

本文实例讲述了AJAX提交表单数据的方法.分享给大家供大家参考.具体如下: var TINY={}; TINY.ajax = function() { return { /** * @param string type 请求类型,post,get(目前只实现了这两种) * @param strng url 请求的地址 * @param object data 当使用post请求时的请求参数,ex: data=> {name:'adam'} * @param function callback 成