纯HTML+AJAX+JQUERY+JSON的开发,想必大家都熟悉不过了。但一个稍复杂少少的web page可能涉及到多次数据读写操作,如下拉列表的联动,数据的展示等。我想说的问题是。
1.究竟是一个功能对应一个ashx还是一个页面对应一个ashx呢?前者导致ashx很多,而后者给我感觉怪怪的,请大家发表一下自己的处理方式。
2.大家在处理跨页访问获得JSON数据的处理方式是什么?典型的场景是,A页面传入QueryString到B页面,而B页面要通过另一个ashx文件去拿数据,B页面必然要把A页面的QueryString抛给ashx,我的做法是自己写一个处理地址去得出具体的QueryString之组装再抛,一般都有这些JS现成插件,不过总觉得有点别扭,不知道大家又有什么好的做法?
就一个ashx,通过对传入参数的解析,调用不同的功能,比如给每个功能一个字符串ID,然后在服务器收到后通过该ID选择不同的处理函数或者类,选择处理函数或类的时候,就可以使用IOC来消除switch语句。
习惯一个表对应一个...关于一个表的逻辑全写进去,根参数决定执行哪个功能,就是哪个函数,然后返回相应的数据。
这个要看你的了。
你可以将某个功能模块的ajax相关操作放到一个ashx文件中,这样便于管理。 ajax请求该资源文件时候传入方法名,园子里有人贴过相关代码,如下
public void ProcessRequest(HttpContext context)
{
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";
try
{
if (HttpContext.Current.Request["cmd"] != null)
{
string cmd = HttpContext.Current.Request["cmd"];
var method = this.GetType().GetMethod(cmd);
if (method != null)
{
method.Invoke(this, new object[] { context });
}
}
}
catch (Exception ex)
{
}
}
public void Add(HttpContext context)
{
//相关业务
}
public bool IsReusable
{
get
{
return false;
}
}
这篇贴子让我明白了不少道理啊