代码改变世界

C#中前台的js请求ashx的接口方法

2019-01-17 12:18  wolfer_3  阅读(902)  评论(0)    收藏  举报

我们在项目中有时候遇到的接口是ashx结尾的,那么我们请求去调用这个接口的时候。可以用页面中的ajax去请求调用这个接口。

1.首先我们调用的那个接口后台返回给前台的数据格式一般为json格式。

2.首先我们需要引用jquery。然后在新建一个html文件。html里面的代码如下:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <script src="js/lib/jquery.min.js"></script>
    <title>Ajax请求demo</title>
</head>

<body>
<script>
$(function(){
        var html="";
    $.ajax({
        type: "POST",
        url: "/shpd/UserCenter/ashx/nw.ashx?action=getgovinfo&subjectid=33853",
        data: {},
        dataType: "text",
        async:false,
        success: function (result) {
            if (result != null && result != "") {
                var table = eval(result);
                for (var i = 0; i < table.length; i++) {
                    html+="<li class=\"wb-data-info\"><a href=\""+table[i]["urlInfoDeatail"]+"\" title=\"" + table[i]["Title"] + "\" target=\"_blank\">" + table[i]["Title"] + "</a><span class=\"wb-data-time\">" + table[i]["StartTime"] + "</span></li>";
                }
            }
            $("#showlist").html(html);
        },
        error: function (err) {
        $("#showlist").html("<li class=\"wb-data-list\"><a class=\"wb-data-infor\">缃戠粶閿欒锛岃鑱旂郴绠$悊鍛�...</a></li>");
        }
    });
})
</script>

 
</body>

</html>

 3.后台代码如下:

  string SiteRoot = System.Configuration.ConfigurationManager.AppSettings["SiteRoot"].ToString(); 
        public void ProcessRequest(HttpContext context)
        {
            string result = "";
            if (HttpContext.Current != null)
            {
                if (HttpContext.Current.Request.RequestType.ToLower() == "post")
                {
                    string action = HttpContext.Current.Request.QueryString["action"];
                    string categorynum = HttpContext.Current.Request.QueryString["categorynum"];
                    string type = HttpContext.Current.Request.QueryString["type"];
                    switch (action.ToLower())
                    {
                        
                        case "getgovinfo":
                            string subjectid = HttpContext.Current.Request.QueryString["subjectid"];
                            result = GetGovInfo(subjectid);
                            break;
                        case "pptslist":
                            result = Pptslist(categorynum,type);
                            break;
                        case "nchzlist":
                            result = Nchzlist(categorynum, type);
                            break;
                        default:
                            result = "";
                            break;
                    }
                }
            }
            context.Response.ContentType = "text/plain";
            context.Response.Write(result);
        }

        public string Nchzlist(string CategoryNum, string Type)
        {
            StringBuilder sb = new StringBuilder();
            string Content = "";
            if (Type == "1")
            {
                string sqlCategory = "select  * from  WebDB_Category where CategoryNum like '" + CategoryNum + "%' order by CategoryNum";
                DataView dvCategoryNum = GetDataView(sqlCategory);
                if (dvCategoryNum.Count > 0)
                {
                    sb.Append("[");
                    foreach (DataRowView itemCategoryNum in dvCategoryNum)
                    {
                        Content += "{\"tyle\":\"" + itemCategoryNum["CateGoryName"].ToString() + "\",";

                        string sqlcount = "select  count(*) num from  View_InfoMain where CategoryNum ='" + itemCategoryNum["CategoryNum"].ToString() + "' and InfoStatusCode='9'";
                        DataView dvcount = GetDataView(sqlcount);
                        Content += "\"num\":\"" + dvcount[0]["num"].ToString() + "\",\"infodetail\":";

                        string sqlInfoDetail = "select  * from  View_InfoMain where CategoryNum ='" + itemCategoryNum["CategoryNum"].ToString() + "' and InfoStatusCode='9' order by IsTop desc, OrderNum desc,InfoDate desc";
                        DataView dvInfoDetail = GetDataView(sqlInfoDetail);
                        if (dvInfoDetail.Count > 0)
                        {
                            Content += "[";
                            foreach (DataRowView itemInfoDetail in dvInfoDetail)
                            {
                                string InfoUrl = GetInfoUrl(itemInfoDetail["InfoID"].ToString(), itemInfoDetail["CategoryNum"].ToString(), Convert.ToDateTime(itemInfoDetail["InfoDate"]));
                                string Title = itemInfoDetail["Title"].ToString();

                                Content += "{\"InfoUrl\":\"" + InfoUrl + "\",";
                                Content += "\"Title\":\"" + Title + "\"},";
                            }
                            Content = Content.Substring(0, Content.Length - 1);
                            Content += "]},";
                        }
                        else
                        {
                            Content += "\"\"},";
                        }
                    }
                    Content = Content.Substring(0, Content.Length - 1);
                    sb.Append(Content);
                    sb.Append("]");
                }
            }
            else
            {
                string sqlXZ = "select  distinct(SecondTitle) from  View_InfoMain where CategoryNum like '" + CategoryNum + "%'";
                DataView dvXZ = GetDataView(sqlXZ);
                if (dvXZ.Count > 0)
                {
                    sb.Append("[");
                    foreach (DataRowView itemXZ in dvXZ)
                    {
                        Content += "{\"tyle\":\"" + itemXZ["SecondTitle"].ToString() + "\",";

                        string sqlcount = "select  count(*) num from  View_InfoMain where SecondTitle like '%" + itemXZ["SecondTitle"].ToString() + "%' and InfoStatusCode='9' and CategoryNum like '" + CategoryNum + "%'";
                        DataView dvcount = GetDataView(sqlcount);
                        Content += "\"num\":\"" + dvcount[0]["num"].ToString() + "\",\"infodetail\":";

                        string sqlInfoDetail = "select  * from  View_InfoMain where SecondTitle like '%" + itemXZ["SecondTitle"].ToString() + "%' and InfoStatusCode='9' and CategoryNum like '" + CategoryNum + "%' order by IsTop desc, OrderNum desc,InfoDate desc";
                        DataView dvInfoDetail = GetDataView(sqlInfoDetail);
                        if (dvInfoDetail.Count > 0)
                        {
                            Content += "[";
                            foreach (DataRowView itemInfoDetail in dvInfoDetail)
                            {
                                string InfoUrl = GetInfoUrl(itemInfoDetail["InfoID"].ToString(), itemInfoDetail["CategoryNum"].ToString(), Convert.ToDateTime(itemInfoDetail["InfoDate"]));
                                string Title = itemInfoDetail["Title"].ToString();

                                Content += "{\"InfoUrl\":\"" + InfoUrl + "\",";
                                Content += "\"Title\":\"" + Title + "\"},";
                            }
                            Content = Content.Substring(0, Content.Length - 1);
                            Content += "]},";
                        }
                        else
                        {
                            Content += "\"\"},";
                        }
                    }
                    Content = Content.Substring(0, Content.Length - 1);
                    sb.Append(Content);
                    sb.Append("]");
                }
            }
            return sb.ToString();
        }

        public string Pptslist(string CategoryNum,string Type)
        {
            StringBuilder sb = new StringBuilder();
            string Content = "";
            if (Type == "1")
            {
                string sqlCategory = "select  * from  WebDB_Category where CategoryNum like '" + CategoryNum + "%' order by CategoryNum";
                DataView dvCategoryNum = GetDataView(sqlCategory);
                if (dvCategoryNum.Count > 0)
                {
                    sb.Append("[");
                    foreach (DataRowView itemCategoryNum in dvCategoryNum)
                    {
                        Content += "{\"tyle\":\"" + itemCategoryNum["CateGoryName"].ToString() +"\",";

                        string sqlcount = "select  count(*) num from  View_InfoMain where CategoryNum ='" + itemCategoryNum["CategoryNum"].ToString() + "' and InfoStatusCode='9'";
                        DataView dvcount = GetDataView(sqlcount);
                        Content += "\"num\":\"" + dvcount[0]["num"].ToString() + "\",\"infodetail\":";

                        string sqlInfoDetail = "select  * from  View_InfoMain where CategoryNum ='" + itemCategoryNum["CategoryNum"].ToString() + "' and InfoStatusCode='9' order by IsTop desc, OrderNum desc,InfoDate desc";
                        DataView dvInfoDetail = GetDataView(sqlInfoDetail);
                        if (dvInfoDetail.Count > 0)
                        {
                            Content += "[";
                            foreach (DataRowView itemInfoDetail in dvInfoDetail)
                            {
                                string ImgUrl = "";
                                if (itemInfoDetail["HaveHeadNews"].ToString() != "" && itemInfoDetail["HaveHeadNews"] != null)
                                {
                                    string sqlInfoUpfiles = "select * from dbo.WebDB_Info_Upfiles where AttachID='" + itemInfoDetail["HaveHeadNews"].ToString() + "'";
                                    DataView dvInfoUpfiles = GetDataView(sqlInfoUpfiles);
                                    ImgUrl = SiteRoot+"Upfiles/FileAttach/" + dvInfoUpfiles[0]["AttachID"].ToString() + "/" + dvInfoUpfiles[0]["filename"].ToString();
                                }
                                string InfoUrl = GetInfoUrl(itemInfoDetail["InfoID"].ToString(), itemInfoDetail["CategoryNum"].ToString(), Convert.ToDateTime(itemInfoDetail["InfoDate"]));
                                string Title = itemInfoDetail["Title"].ToString();

                                Content += "{\"ImgUrl\":\"" + ImgUrl + "\",";
                                Content += "\"InfoUrl\":\"" + InfoUrl + "\",";
                                Content += "\"Title\":\"" + Title + "\"},";
                            }
                            Content = Content.Substring(0, Content.Length - 1);
                            Content += "]},";
                        }
                        else
                        {
                            Content += "\"\"},";
                        }
                    }
                    Content = Content.Substring(0, Content.Length - 1);
                    sb.Append(Content);
                    sb.Append("]");
                }
            }
            else
            {
                string sqlXZ = "select  distinct(SecondTitle) from  View_InfoMain where CategoryNum like '" + CategoryNum + "%'";
                DataView dvXZ = GetDataView(sqlXZ);
                if (dvXZ.Count > 0)
                {
                    sb.Append("[");
                    foreach (DataRowView itemXZ in dvXZ)
                    {
                        Content += "{\"tyle\":\"" + itemXZ["SecondTitle"].ToString()+"\",";

                        string sqlcount = "select  count(distinct(Title)) num from  View_InfoMain where SecondTitle like '%" + itemXZ["SecondTitle"].ToString() + "%' and InfoStatusCode='9' and CategoryNum like '" + CategoryNum + "%'";
                        DataView dvcount = GetDataView(sqlcount);
                        Content += "\"num\":\"" + dvcount[0]["num"].ToString() + "\",\"infodetail\":";

                        string sqlInfoDetail = "select  * from View_InfoMain as a where not exists(select 1 from View_InfoMain where a.Title = Title and a.SysID<SysID) and SecondTitle like '%" + itemXZ["SecondTitle"].ToString() + "%' and  InfoStatusCode='9' and CategoryNum like '%" + CategoryNum + "%' order by IsTop desc, OrderNum desc,InfoDate desc";
                        DataView dvInfoDetail = GetDataView(sqlInfoDetail);
                        if (dvInfoDetail.Count > 0)
                        {
                            Content += "[";
                            foreach (DataRowView itemInfoDetail in dvInfoDetail)
                            {
                                string ImgUrl = "";
                                if (itemInfoDetail["HaveHeadNews"].ToString() != "" && itemInfoDetail["HaveHeadNews"] != null)
                                {
                                    string sqlInfoUpfiles = "select * from dbo.WebDB_Info_Upfiles where AttachID='" + itemInfoDetail["HaveHeadNews"].ToString() + "'";
                                    DataView dvInfoUpfiles = GetDataView(sqlInfoUpfiles);
                                    ImgUrl = SiteRoot+"Upfiles/FileAttach/" + dvInfoUpfiles[0]["AttachID"].ToString() + "/" + dvInfoUpfiles[0]["filename"].ToString();
                                }
                                string InfoUrl = GetInfoUrl(itemInfoDetail["InfoID"].ToString(), itemInfoDetail["CategoryNum"].ToString(), Convert.ToDateTime(itemInfoDetail["InfoDate"]));
                                string Title = itemInfoDetail["Title"].ToString();

                                Content += "{\"ImgUrl\":\"" + ImgUrl + "\",";
                                Content += "\"InfoUrl\":\"" + InfoUrl + "\",";
                                Content += "\"Title\":\"" + Title + "\"},";
                            }
                            Content = Content.Substring(0, Content.Length - 1);
                            Content += "]},";
                        }
                        else
                        {
                            Content += "\"\"},";
                        }
                    }
                    Content = Content.Substring(0, Content.Length - 1);
                    sb.Append(Content);
                    sb.Append("]");
                }
            }
            return sb.ToString();
        }

        public string GetInfoUrl(string InfoID, string CategoryNum, DateTime InfoDate)
        {
            return SiteRoot+"department/" + InfoDate.ToString("yyyyMMdd") + "/" + CategoryNum + "_" + InfoID + ".htm";
        }

        public DataView GetDataView(string sqlstr)
        {
            Database db = DatabaseFactory.CreateDatabase(ConfigurationManager.AppSettings["ConnectionString"].ToString(), "System.Data.SqlClient");
            DbCommand cmd = db.GetSqlStringCommand(sqlstr);
            return db.ExecuteDataView(cmd);
        }

        public string GetGovInfo(string subjectid)
        {
            int iTotalNum = 0;
            DataTable dt = new PDWeb.BaseCode.BLL.GovOpen().GetCurrentInfoListByDeptId(4, 0, subjectid, out iTotalNum);
            StringBuilder sb = new StringBuilder();
            sb.Append("");
            if (dt != null && dt.Rows.Count > 0)
            {
                string Content = "";
                sb.Append("[");
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    string urlInfoDeatail = "/shpd/InfoOpen/InfoDetail.aspx?id=" + dt.Rows[i]["ContentId"];
                    string Title = dt.Rows[i]["Title"].ToString();
                    string StartTime = Convert.ToDateTime(dt.Rows[i]["StartTime"]).ToString("yyyy-MM-dd");

                    Content += "{\"urlInfoDeatail\":\"" + urlInfoDeatail + "\",";
                    Content += "\"StartTime\":\"" + StartTime + "\",";
                    Content += "\"Title\":\"" + Title + "\"},";
                }
                Content = Content.Substring(0, Content.Length - 1);
                sb.Append(Content);
                sb.Append("]");
            }
            return sb.ToString();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

 

4.其中前台对后台传过来的json格式进行解析:方法如下。其中首先需要对这个进行evar(),然后在通过类似table进行遍历解析。

success: function (result) {
            if (result != null && result != "") {
                var table = eval(result);
                for (var i = 0; i < table.length; i++) {
                    html+="<li class=\"wb-data-info\"><a href=\""+table[i]["urlInfoDeatail"]+"\" title=\"" + table[i]["Title"] + "\" target=\"_blank\">" + table[i]["Title"] + "</a><span class=\"wb-data-time\">" + table[i]["StartTime"] + "</span></li>";
                }
            }
            $("#showlist").html(html);
        },