使用手动构造的JQuery.ajax调用调用页面方法时,可能会发生此错误。
反序列化由.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();
}
答案 0 :(得分:5)
在我的实例中,这在jquery ajax调用中被证明是一个错误的数据包 数据包应该是键值对的对象,Web方法的每个参数都有一个键。
如果您的方法有多个参数,这可能很明显,但如果不这样做,很容易假设您只需传递参数内容:
这样:
data: JSON.stringify(MyParam),
应该是这样的:
data: JSON.stringify({ParamName:MyParam}),
如果你知道的话很明显 - 如果你不知道的话,请抓头!
有关详细信息,请参阅my blog post