2013-10-25 3 views
1

Я пытаюсь вызвать веб-службы для возврата объекта, но он бросает ошибку какWebSerive вызовов через JQuery Ajax

{ «Сообщение»: "Не удается преобразовать объект типа \ u0027System.Int32 \ u0027 ввести \ u0027System.Collections.Generic.IDictionary`2 [System.String, System.Object] \ u0027 "," StackTrace ":" в System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal (Object o, Тип типа, JavaScriptSerializer serializer, Boolean throwOnError, Object & convertObject) \ r \ n в System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain (Object o, Тип типа, JavaScriptSerializer serializer, Boolean throwOnError, Object & convertObject) \ r \ n в System.Web.Script. Serialization.JavaScriptSerializer.Deserialize (JavaScriptSe rializer serializer, String input, Тип типа, Int32 depthLimit) \ r \ n в System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T] (ввод строки) \ r \ n в System.Web.Script.Services.RestHandler. GetRawParamsFromPostRequest (контекст HttpContext, сериализатор JavaScriptSerializer) \ r \ n в System.Web.Script.Services.RestHandler.GetRawParams (метод WebServiceMethodDataData, контекст HttpContext) \ r \ n в System.Web.Script.Services.RestHandler.ExecuteWebServiceCall (контекст HttpContext , WebServiceMethodData methodData)», "ExceptionType": "System.InvalidOperationException"}

Вот мой образец JavaScript

<script type="text/javascript"> 
     $(function() { 
      $('#<%=ddlUserGroup.ClientID %>').change(function() { 
       UserGroupID = $('#<%= ddlUserGroup.ClientID %>').val(); 
       $.ajax({ 
        url: "WebService.asmx/GetMenu", 
        data: UserGroupID, 
        dataType: "json", 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        success: function (result) { 
         var rootNode = $("#tree").dynatree("getRoot"); 
         rootNode.removeChildren(); 
         rootNode.addChild($.parseJSON(resp.Data)); 
        }, 
        error: function (jqXHR, textStatus, errorThrown) { 
         var loginUrl = jqXHR.getResponseHeader("loginUrl"); 
         if (jqXHR.status == 502) { 
          window.location = loginUrl; 
         } 
         else { 
          alert('error' + errorThrown); 
         } 
        } 
       }); 
      }); 
</script> 

и это мой WebService

[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
[WebMethod] 
public object GetMenu(int roleID) 
{ 
    var menuItems = new TblUserGroupMenuService().GetMenuByUserGroupID(Common.ToInt32(roleID)); 
    List<TblmenuInfo> list = new List<TblmenuInfo>(); 
    foreach (DataRow dr in menuItems.Rows) 
    { 
     list.Add(new TblmenuInfo 
     { 
      Id = Common.ToInt32(dr["ID"]), 
      Label = dr["Name"].ToString(), 
      // Url = dr["Url"].ToString(), 
      // Iconurl = dr["IconURL"].ToString(), 
      Parentid = Common.ToNInt32(dr["ParentID"]), 
      //Order = Common.ToInt32(dr["DisplayOrder"]) 
     }); 
    } 
    return list.AsHierarchy(o => o.Id, parent => parent.Parentid, orderBy => orderBy.Order).AsExtTreeNodes((o, children) => new ExtTreeNode<int> 
       { 
        Key = o.Id, 
        Title = o.Label, 
        Select = (o.Order < 9999), 
        IsFolder = children > 0 
       }); 
} 

ответ

1

UserGroupID, который вы передаете WebMethod не JSON. Попробуйте {"roleID": UserGroupID} и используйте с ним JSON.stringify().

Смежные вопросы