2014-01-08 28 views
0

我正在使用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”

+0

尝试与阿贾克斯 –

+0

只是'jsdata' @SridharR然后我得到的错误信息: “无效的JSON原始:维护。”维护是我的变数。 – Pomster

+0

请参阅http://stackoverflow.com/questions/736058/passing-parameter-to-webmethod-with-jquery-ajax? –

回答

1

您的变量参数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); 
     } 
    }); 
+0

删除行我然后得到错误消息,“消息”:“无效的JSON基元:维护。”维护是我试图通过的变量。 – Pomster

+0

谢谢:)为我做了:) – IamCavic

相关问题