<%@ WebHandler Language="C#" Class="Fsll.AJAX" %>
using System;
using System.Web;
using System.Web.SessionState;
using System.Reflection;
using System.Data;
using Framework.Common.Extensions;
namespace Fsll
{
/*----------------------------- Demo -----------------------------
$.getJSON("/RMS/RequirementManage/AJAX.ashx?cmd=TestJson",function(json){
if(json.error!=null && json.error!=undefined && json.error=="1"){
//处理错误
return;
}
//处理数据
});
*/
/// <summary>
/// Author : yenange
/// Description: 专用于处理AJAX请求的一般处理程序
/// Demo : 如上, 本文件对应 TestJson() 方法
/// Remark : 此类是公用的ajax请求页,为了简洁与效率,每个方法请不要超过 10 行。业务逻辑和取数据,请放在BLL层
/// Date : 2012-07-31
/// </summary>
public class AJAX : IHttpHandler, IReadOnlySessionState
{
public AJAX() {
//初始化Request等
Init();
}
public void ProcessRequest(HttpContext context)
{
#region [ 根据Reqeust["cmd"]来执行相应的方法 ]
try
{
String methodName = Request["cmd"];
Type type = Type.GetType("Fsll.AJAX");
object instance = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod(methodName);
if (null != method)
{
method.Invoke(instance, null);
}
}
catch (Exception ex)
{
outputString = "{\"error\":\"1\",\"message\":\"" + ex.Message + "\"}";
}
#endregion
//输出结果
ResponseWriteResult();
}
#region [ 执行方法. 1.方法名必须与QueryString中的cmd=xxx对应; 2.必须是public类型; 3.输出的内容必须赋给outputString ]
public void TestJson()
{
//下面注释去掉即可测试:有异常时的处理
//throw new Exception("异常测试的信息!");
outputString = "{\"name\":\"你不错呀!\"}";
}
#endregion
#region [ Tools ]
protected HttpRequest Request;
protected HttpResponse Response;
protected HttpServerUtility Server;
protected HttpSessionState Session;
protected String ContentType;
protected static String outputString; //必须为static
private void Init()
{
Request = HttpContext.Current.Request;
Response = HttpContext.Current.Response;
Server = HttpContext.Current.Server;
Session = HttpContext.Current.Session;
ContentType = "application/json";
if (!String.IsNullOrEmpty(Request["ContentType"]))
{
ContentType = Request["ContentType"].Replace("_", "/");
}
outputString = "{\"error\":\"1\",\"message\":\"没改变outputString初始值.\"}";
}
public bool IsReusable
{
get
{
return false; //必须为false
}
}
/// <summary>
/// 输出结果
/// </summary>
public void ResponseWriteResult()
{
Response.ContentType = this.ContentType;
Response.Write(outputString);
}
#endregion
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script src="jquery/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$.getJSON("AJAX.ashx?cmd=TestJson",function(json){
if(json.error!=null && json.error!=undefined && json.error=="1"){
alert(json.message);
return;
}
alert( json.name );
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="divTest" >
</div>
</form>
</body>
</html>