3

当使用手动构造的 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();
}
4

1 回答 1

5

在我的实例中,这被证明是 jquery ajax 调用中的错误数据包。数据包应该是键值对的对象,每个参数都有一个键用于 web 方法。

如果您的方法中有多个参数,这可能很明显,但如果您没有,很容易假设您可以只传递参数内容:

这个:

data: JSON.stringify(MyParam), 

应该是这样的:

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

很明显,如果你知道 - 如果你不知道,那就挠头!

有关更多信息,请参阅我的博客文章

于 2013-05-31T09:16:24.427 回答