我正在使用web方法和ajax调用,但无法正确使用参数?使用jQuery将参数传递给WebMethod 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);
}
});
而且我的webmethod:
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static DataTable GetSubCategories(string category)
{
}
我得到的错误如下:
“消息”:“不能将\ u0027System.String \ u0027类型的对象转换为 类型 \ System.Collections.Generic.IDictionary`2 [System.S特林,System.Object的] \ u0027" , “堆栈跟踪”:” 在 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(对象 O,类型类型,JavaScriptSerializer串行器,布尔throwOnError, 对象& convertedObject个)\ r \ n在 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(对象 O,类型类型,JavaScriptSerializer串行器,布尔throwOnError, 对象& convertedObject个)\ r \ n在 System.Web.Script.Serialization.JavaScriptSerializer。反序列化(JavaScriptSerializer 串行器,字符串输入,类型类型,Int32 depthLimit)\ r \ n在 System.Web.Script.Serialization.JavaScriptSerializer.Deser ialize [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”
尝试与阿贾克斯 –
只是'jsdata' @SridharR然后我得到的错误信息: “无效的JSON原始:维护。”维护是我的变数。 – Pomster
请参阅http://stackoverflow.com/questions/736058/passing-parameter-to-webmethod-with-jquery-ajax? –