C# 将参数传递给WebMethod时出现jQuery Ajax获取错误

C# 将参数传递给WebMethod时出现jQuery Ajax获取错误,c#,jquery,ajax,serialization,C#,Jquery,Ajax,Serialization,我使用的是web方法和ajax调用,但无法正确使用参数 我已经做了很多修复,但是没有人能够解决我的问题 我需要传递一个字符串并让我的web方法返回一个数据表,为什么需要将其作为json传递 以下是ajax调用: var jsdata = '{category:' + category + '}'; var jstext = JSON.stringify(jsdata, null, 2); $.ajax({ type: "POST", url: "GIFacRequest.aspx/Get

我使用的是web方法和ajax调用,但无法正确使用参数

我已经做了很多修复,但是没有人能够解决我的问题

我需要传递一个字符串并让我的web方法返回一个数据表,为什么需要将其作为json传递

以下是ajax调用:

var jsdata = '{category:' + category + '}';
var jstext = JSON.stringify(jsdata, null, 2);
$.ajax({
  type: "POST",
  url: "GIFacRequest.aspx/GetSubCategories",
  data: jstext ,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (dtSubCategory) {
        PopulateSubCategoryDD(dtSubCategory);
      },
      error: function (response) {
         $('body', document).html(response.responseText);
      }
  });
我的网络方法是:

[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static DataTable GetSubCategories(string category)
{
}
我得到的错误如下:

“消息”:“无法将类型为\u0027System.String\u0027的对象转换为” 类型 \u0027System.Collections.Generic.IDictionary`2[System.String,System.Object]\u0027,“StackTrace”: 在 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(对象 o、 类型类型,JavaScriptSerializer序列化程序,布尔错误, 对象&convertedObject)\r\n位于 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(对象 o、 类型类型,JavaScriptSerializer序列化程序,布尔错误, 对象&convertedObject)\r\n位于 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer 序列化程序,字符串输入,类型,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(WebServiceMethodData methodData,HttpContext\r\n位于 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext 上下文,WebServiceMethodData methodData)”,“ExceptionType”:“System.InvalidOperationException”


变量params
var jsdata='{category:'+category+'}'
是一个字符串

因此,行:
JSON.stringify(jsdata,null,2),是冗余的(或者应该是冗余的)。只需设置数据:jsdata

请尝试使用此代码

var jsdata = '{category:' + category + '}';
$.ajax({
  type: "POST",
  url: "GIFacRequest.aspx/GetSubCategories",
  data: jsdata ,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (dtSubCategory) {
        PopulateSubCategoryDD(dtSubCategory);
      },
      error: function (response) {
         $('body', document).html(response.responseText);
      }
  });

在中仅使用
jsdata
ajax@SridharR然后我得到了错误消息:“无效的JSON原语:维护。”其中维护是我的变量。参考此?@SridharR我看到了那篇文章,但它没有提供任何答案。一个答案解释了问题,这就是为什么它会出现Votes删除那一行,然后我得到错误消息,“message”:“无效的JSON原语:维护。”其中维护是我试图传入的变量。谢谢:)这帮我做到了:)