这两天跟着辉哥做项目。

由于我那个项目几乎就是用各种重复的语句堆起来的,

维护起来非常麻烦,

所以我要用他的项目继续写下去。

接着碰到一个问题,就是我问辉哥,是不是一个*.ashx只可以处理一个事,

辉哥说不是的,你可以用ajax穿进去数据的时候在第一个键值那设置相同的键但是不同的值。

我当时想了很久也不明白,然后我到了第二天才想明白。


例如:

我Web页面这么写:

<script type="text/javascript">
$("#button1").click(function(){
$.ajax(
           {
               type: "POST",
               url: "/ashx/a.ashx",
               async: 'true',
               data: "key1=" + "first" + "a=" + "1" + "b=" + "2",
               success: function (msg) {
                   if (msg == "a1")
                   {
                       alert("aaaaaaaaaaaaaaaaaa!");
                   }
                   else if (msg == "a2") {
                       alert("bbbbbbbbbbbbbbbbbb!");
                   }
                   ......
               },
               complete: function (data) {
               },
               error: function (XMLHttpRequest, textStatus, thrownError) {
                   //window.location.reload();
                   alert(XMLHttpRequest.status);
                   alert(XMLHttpRequest.readyState);
                   alert(textStatus);
                   alert(XMLHttpRequest.responseText);
               }
});
</script>

然后我在a.ashx这么写:
public void Proce***equest(HttpContext context)
        {
            if (context.Request["key1"] == "first")
            {
                
                //代码块,各种处理语句
                context.Response.Write("a1");
            }
            if (context.Request["key1"] == "second")
            {
                context.Response.Write("a2");
            }
            if (context.Request["key1"] == "third")
            {
                //代码块,各种处理语句
                context.Response.Write("a3");
            }
            .......
        }

我一直想不明白的是,要是每个ajax传的语句都有相同的键值,然后会不会乱了?

到最后我想明白了,是不会的。

因为只要我ajax传的第一个键值过去他只能进其中一个if里面执行,

其他的if他统统进不去,这样子就只可以执行其中符合他的代码块了,乱不起来!