响应不同的Ajax请求,您是怎么做的?

原创|其它|编辑:郝浩|2009-05-18 10:17:44.000|阅读 406 次

概述:开发过程当中,良多的地方用到了Ajax,固然是一种火了良久的玩意,但是对我这等井底之蛙来说,良多东西都是自己慢慢折腾出来的。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

      开发过程当中,良多的地方用到了Ajax,固然是一种火了良久的玩意,但是对我这等井底之蛙来说,良多东西都是自己慢慢折腾出来的。

 

      习惯上使用Jquery发送哀求,服务端用ashx文件来处理客户真个哀求, 最开始的时候像下面的情形:

 

1、$.get("getName.ashx",{id:12345},function(data){});

2、$.post("setName.ashx",{name:"Zaibiechu"},function(data){});


 

一个哀求对应一个ashx文件,项目做久了,于是产生了一堆的ashx文件,天然觉得不是一个好办法。再接下来就把一些相关的哀求放到统一个文件中来,而客户端通过发送一个“cmd”参数,来哀求相应的方法,如下: 

 

1、$.get("nameMethod.ashx",{cmd:"getName",id:12345},function(data){});

2、$.post("nameMethod.ashx",{cmd:"setName",name:"Zaibiechu"},function(data){});


 

服务器端处理: 

 

public class nameMethod : IHttpHandler {
   
public void ProcessRequest (HttpContext context) {
        context.Response.ContentType 
= "text/plain";
        
if (context.Request["cmd"!= null)
        {
            
string cmd = context.Request["cmd"];
            
switch (cmd)
            {
                
case "getName": GetName(context); break;
                
case "setName": SetName(context); break;
                    .                    
            }
        }
    }


    
public void GetName(HttpContext context)
    {
        
    }

   
public void SetName(HttpContext context)
    {
        
    }

.      

}

 

这样文件是省了不少,但是一堆case,看上去仍是别扭,怎么才可以看上去更好点呢。琢磨了一阵,想到了反射,遂将后台方法修改如下:

 

public class nameMethod : IHttpHandler {
    
    
public void ProcessRequest (HttpContext context) {
        context.Response.ContentType 
= "text/plain";
        
if (context.Request["cmd"!= null)
        {
            
string cmd = context.Request["cmd"];
            var method 
= this.GetType().GetMethod(cmd);
            
if (method != null)
            {
                method.Invoke(
thisnew object[]{ context});
            }
        }
    }


    
public void GetName(HttpContext context)
    {
         

    }

   
public void SetName(HttpContext context)
    {
         
    }  

}

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP