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); },
浙公网安备 33010602011771号