本文为C#环境,使用2中不同的AJAX协议传输参数的方式,处理程序与数据库之间的交互。
URL:
拼写 url: '后台.ashx' + '?A=' + getQueryString("内容") + '&B=' + getQueryString("内容") + '&C=' + 内容,由后台程序解析URL,并分离获取A,B,C三种不同的参数。
$.ajax({
type: 'POST',
url: 'OrgNameHandler.ashx' + '?CategoryID=' + getQueryString("CategoryID") + '&OrgID=' + getQueryString("orgID") + '&isSub=' + isSub,
async: false,
dataType: "json",
success: function (result) {
if (result.IsSuccess) {
$.each(result.Data, function (index, item) {
$("").appendTo("#OrgNameList");
});
$("#OrgNameList").val(getQueryString("OrgName"));
} else {
$(function () {
$.messager.alert(result.Message);
});
}
}
}); 后台通过context.Request["A"]获取指定参数值,并进行数据库交互准备工作
namespace PMF.USL.Web.FrameWork
{
public class OrgNameHandler : IHttpHandler
{
private int page;
List data = new List();
public void ProcessRequest(HttpContext context)
{
int A = int.Parse(context.Request["A"]);
int B = int.Parse(context.Request["B"]);
int C = int.Parse(context.Request["C"]);
//从缓存里取出所需要的UserID
PMF.BLL.User oUser = new BLL.User();
oUser = (PMF.BLL.User)(HttpContext.Current.Session["User"]);
//建立DBA连接
DBAccess oDBA = new DBAccess();
//给参数赋值
SqlParameter[] param = new SqlParameter[5];
param[0] = new SqlParameter("@orgID", SqlDbType.Int);
param[0].Value = A;
//发送请求,并返回值
DataSet ds = oDBA.CallSP("USP_GetOrgNameList", param);
DataTable dt = ds.Tables[0];
DataView dvorgNameList = new DataView(dt, "", "", DataViewRowState.CurrentRows);
data.Clear();
//解析值并构造数组
int i = default(int);
for (i = 0; i <= dvorgNameList.Count - 1; i++)
{
OrgNameList category = new OrgNameList();
category.id = dvorgNameList[i]["OrgID"].ToString();
category.text = dvorgNameList[i]["OrgName"].ToString();
data.Add(category);
}
//向前台返回参数
context.Response.ContentType = "text/plain";
context.Response.Write(AjaxResult.Success(data));
}
class OrgNameList
{
public string id { get; set; }
public string text { get; set; }
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
-----------------------------------------------------------------------------我是分割线-----------------------------------------------------------------------------
Action(适合多方法):
这是同样是通过URL传递参数,但是参数是一个方法选择值 “action=SelectCondition”
$.ajax({
type: 'POST',
url: "DocMgtNavigatorHandler.ashx?action=SelectCondition",
async: false,
dataType: "json",
success: function (result) {
if (result.IsSuccess) {
$.each(result.Data, function (index, item) {
condition = item["condition"];
});
} else {
$(function () {
$.messager.alert(result.Message);
});
}
}
});这里通过 string action = context.Request["action"].ToString(); 获取所需方法值,并使用switch调用我们所需方法
//设置Action方法,使用switch选取所需请求
public class DocMgtNavigatorHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
String value = String.Empty;
string action = context.Request["action"].ToString();
try
{
switch (action)
{
case "A":
aGO(context);
break;
case "B":
bGO(context);
break;
default: break;
}
}
catch (Exception ex)
{
throw ex;
}
context.Response.ContentType = "text/plain";
context.Response.Write(value);
}
//调取的子方法
private void aGO(HttpContext context)
{
DBAccess oDBA = new DBAccess();
SqlParameter[] param0 = new SqlParameter[1];
param0[0] = new SqlParameter("@orgID", SqlDbType.Int);
DataSet ds_SelectCondition = oDBA.CallSP("USP_GetDocInfo_IsNotHeadquarters", param0);
DataTable dt_SelectCondition = ds_SelectCondition.Tables[0];
DataView dv_SelectCondition = new DataView(dt_SelectCondition, "", "", DataViewRowState.CurrentRows);
data.Clear();
int i = default(int);
for (i = 0; i <= dv_SelectCondition.Count - 1; i++)
{
selectConditionList.condition = 0;
data.Add(selectConditionList);
}
context.Response.ContentType = "text/plain";
context.Response.Write(AjaxResult.Success(data));
}
本文介绍在C#环境中,通过两种AJAX协议传递参数:URL拼接方式和Action方法选择方式,实现与数据库的交互。通过URL拼接,后台程序解析URL获取A、B、C三个参数;而Action方式则是通过请求中的'action'参数选择并执行相应的方法。
424

被折叠的 条评论
为什么被折叠?



