2014-05-18 28 views
0
<head runat="server"> 
    <title></title> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function PassJavascriptObjectArraytoWebmethod() { 

      var CustomerArr = []; 
      var Customer = new Object(); 
      Customer.CustomerId = "1"; 
      Customer.Name = 'Rakesh'; 
      Customer.Address = 'Mumbai'; 

      CustomerArr.push(Customer); 

      var Customer = new Object(); 
      Customer.CustomerId = "2"; 
      Customer.Name = 'Sandesh'; 
      Customer.Address = 'Banglore'; 

      CustomerArr.push(Customer); 

      var param = JSON.stringify(CustomerArr) 

      $.ajax({ 
       type: 'POST', 
       url: 'Default2.aspx/AddCustomer', 
       data: param, 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'json', 
       success: function(result) { 
       alert(result.d); 
       } 
      }); 


     } 



    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <span onclick="javascript:PassJavascriptObjectArraytoWebmethod();">Call Customer</span> 
    </div> 
    </form> 
</body> 

這裏是我的代碼behid的WebMethod傳遞JSON對象到的webmethod給內部服務器錯誤500

[WebMethod] 
public static string AddCustomer(Customer[] CustomerArr) 
{ 
    return "some result"; 
} 

這裏是例外,我在控制檯中看到

「消息」:「類型\ u0027System .Collections.Generic.IDictionary`2 [[System.String,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.Object,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]] \ u0027不支持反序列化數組。「,」StackTrace「:」at System.Web.Script.Se rialization.ObjectConverter.ConvertListToObject(IList列表,類型類型,JavaScriptSerializer序列化程序,布爾throwOnError,IList & convertedList)\ r \ n在System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o,類型type,JavaScriptSerializer序列化程序,布爾throwOnError ,Object & convertedObject)\ r \ n at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o,Type type,JavaScriptSerializer serializer,Boolean throwOnError,Object & convertedObject)\ r \ n at 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.Se rvices.RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext的上下文)\ r \ n在System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext的上下文中,WebServiceMethodData methodData)」, 「ExceptionType」: 「System.InvalidOperationException」

回答

0

你應該通過相同的名稱對象陣列

$.ajax({ 
       type: 'POST', 
       url: 'Default2.aspx/AddCustomer', 
       data: {CustomerArr:param }, 
       // same name 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'json', 
       success: function(result) { 
       alert(result.d); 
       } 
      }); 
相關問題