AJAX协议传输,并调取数据库返回值

本文介绍在C#环境中,通过两种AJAX协议传递参数:URL拼接方式和Action方法选择方式,实现与数据库的交互。通过URL拼接,后台程序解析URL获取A、B、C三个参数;而Action方式则是通过请求中的'action'参数选择并执行相应的方法。

本文为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));
            }

    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值