这两天跟着辉哥做项目。
由于我那个项目几乎就是用各种重复的语句堆起来的,
维护起来非常麻烦,
所以我要用他的项目继续写下去。
接着碰到一个问题,就是我问辉哥,是不是一个*.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 ProcessRequest(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他统统进不去,这样子就只可以执行其中符合他的代码块了,乱不起来!
原文地址:http://fantasyofhjp.blog.51cto.com/9637224/1708288