2014-01-08 127 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

相關問題