2013-06-19 2 views
0

У меня есть проблема в моем AjaxHandler.ashx becouse в context.Request [ «Action»] не равно нулю, когда я отправить его с помощью JQuery вызов, может кто-то помочь мнеНет ответа от общего обработчика

Примечание: Я использую HTML контроллер не жерех, сетевой контроллер сервера

<script type="text/javascript"> 

    $(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); 
       } 
      }); 
     }); 

    }); 
</script> 
/// <summary> 
    /// Summary description for AjaxHandler 
    /// </summary> 
    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<string, Object> jsonObject = new Dictionary<string, object>(); 
        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; 
      } 
     } 
    } 

ответ

3

Вы, кажется, смешиваясь contentType и dataType.

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) 
    { 
    .... 
    } 
}); 
Смежные вопросы