2013-05-31 38 views
2

使用手动构建的JQuery.ajax调用调用页面方法时可能发生此错误。类型System.Collections.Generic.IDictionary不支持数组的反序列化

反序列化由.NET完成,而不是在用户代码中完成。

的javascript:

MyParam = []; 
... 
$.ajax({ type: 'POST', 
     url: 'PageOrService.as?x/DoSomething', 
     data: JSON.stringify(MyParam), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     complete: function (a, b, c, d) { console.log(a, b, c, d); } 
     }); 

C#

[WebMethod()] 
public static void DoSomething(object ParamName) 
{ 
    ParamName.ToString(); 
} 

回答

5

在我的实例这竟然是在jQuery的AJAX调用 数据包坏数据包被认为是关键的对象值对,web方法的每个参数都有一个关键字。

这是如果你有你的方法,多个参数可能是明显的,但如果你不这样做很容易认为你可以传递参数内容:

这样的:

data: JSON.stringify(MyParam), 

应是这样的:

data: JSON.stringify({ParamName:MyParam}), 

明显的,如果你知道 - 头抓挠,如果你不!

查看my blog post了解更多信息

相关问题