我正在使用网络方法和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" , “堆栈跟踪”:” 在 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(对象 o,Type type,JavaScriptSerializer serializer,Boolean throwOnError, 对象和放大器; convertedObject)\ r \ n at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(对象 o,Type type,JavaScriptSerializer serializer,Boolean throwOnError, 对象和放大器; convertedObject)\ r \ n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer,String input,Type type,Int32 depthLimit)\ r \ n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T](字符串 输入)\ r \ n at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext的 context,JavaScriptSerializer序列化程序)\ r \ n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext context)\ r \ n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext的 context,WebServiceMethodData methodData)”, “ExceptionType”: “System.InvalidOperationException”
答案 0 :(得分:1)
你的变量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);
}
});