这两天跟着辉哥做项目。
由于我那个项目几乎就是用各种重复的语句堆起来的,
维护起来非常麻烦,
所以我要用他的项目继续写下去。
接着碰到一个问题,就是我问辉哥,是不是一个*.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