通用处理程序没有响应

我在AjaxHandler.ashx中遇到问题因为当我使用JQuery调用发送它时,context.Request [“Action”]为null可以有人帮助我

注意:我使用的是html控制器而不是asp,net server controller

 $(function () { $("#btnSearch").click(function () { /*var skill = $("#ddlSkills option:selected").val(); var types = $("#ddlTypes option:selected").val(); var topics = $("#ddlTopics option:selected").val(); var sortBy = $("#ddlSortBy option:selected").val(); */ $.ajax({ url: "../ideapark/DesktopModules/ResourcesFilter/AjaxHandler.ashx", contentType: "application/json; charset=uft-8", type: "POST", data: $('form').serialize(), success: function(data) { for(var i = 0; i < data.length; i++) { //t ajax handler recollection of resources. //U NEED TDESERIALIZE var resID = data.response[i].ID; var summary = data.response[i].Summary; var pageID = data.response[i].PageID; var name = data.response[i].Name; var createdOn = data.response[i].CreatedOn var Total = data.response[i].Total; } }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); alert(XMLHttpRequest); alert(textStatus); console.log(errorThrown); console.log(XMLHttpRequest); console.log(textStatus); console.log(errorThrown); } }); }); });  ///  /// Summary description for AjaxHandler ///  public class AjaxHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/json"; //context.Response.Write("Hello World"); string response = ""; string var = context.Request["Action"].ToString(); switch (context.Request["Action"]) { case "ResponseFilterSearch": response += "{"; Dictionary jsonObject = new Dictionary(); string skill = context.Request["Skill"].ToString(); string type = context.Request["Type"].ToString(); string focus = context.Request["focus"].ToString(); string keyword = context.Request["Keyword"]; string sortby = context.Request["SortBy"]; string pageNumber = context.Request["pagenumber"]; SqlDataProvider sqlConn = new SqlDataProvider(); DataSet dsResults = SqlHelper.ExecuteDataset(sqlConn.ConnectionString, "spResourceSearch", skill, type, focus, keyword, sortby, pageNumber); foreach (System.Data.DataRow row in dsResults.Tables[0].Rows) { response += "\"ID\":" + "\"" + row["Id"].ToString() + "\""; response += "\"Summary\":" + "\"" + row["summary"].ToString() + "\""; response += "\"PageID\":" + "\"" + row["pageId"].ToString() + "\""; response += "\"Name\":" + "\"" + row["name"].ToString() + "\""; response += "\"CreatedOn\":" + "\"" + row["createdOn"].ToString() + "\""; response += "\"Total\":" + "\"" + row["total"].ToString() + "\""; } response += "}"; break; } //this returns a json string context.Response.Write(response); } public bool IsReusable { get { return false; } } } 

您似乎混合了contentTypedataType

contentType表示请求正文的内容类型(即您发送给服务器的数据),您已将其设置为json,而不是$('form').serialize()将生成。 $('form').serialize()application/x-www-form-urlencoded生成数据,这是$ .ajax中的默认值。

现在dataType是响应主体的内容类型(这是从服务器接收的数据),代码应该是json。

 $.ajax({ url: "../ideapark/DesktopModules/ResourcesFilter/AjaxHandler.ashx", dataType: "json", type: "POST", data: $('form').serialize(), success: function(data) { ... }, error: function(XMLHttpRequest, textStatus, errorThrown) { .... } });