0

我使用 jQuery.ajax 向我的服务器发送了一个 AJAX 请求,并且“数据”字段填充了与我的 ClientMessage 类型相对应的 JSON 字符串,但数据没有进入方法的主要参数。当方法在我调试时运行时,在 ProcessRequest 的数据参数中,ClientMessage 的所有成员都为空。

ClientMessage 类的成员是简单的自动实现的 get/set 字符串属性,使用 DataMember(Name="membername") 属性以及类本身的 DataContract 属性进行修饰。在客户端,Chrome 的开发人员工具显示 AJAX 请求的数据对象是有效的 JSON,我可以在请求查看器中展开它以验证正确的对象和正在发送的成员。

我只是无法弄清楚为什么 ClientMessage 数据实例的所有成员都带有空值(顺便说一句,它们都是简单的字符串)。

[OperationContract]
[WebInvoke(Method="POST",BodyStyle=WebMessageBodyStyle.Wrapped,RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessageFormat.Json)]
public ServerResponse ProcessRequest( ClientMessage data )
{
    //all members of "data" parameter are null, why?
4

1 回答 1

0

没关系。显然,您必须在包装对象中发送数据对象,其成员名称与方法的参数名称匹配。data:JSON.stringify({username:"",password:""})因此,与其使用我必须使用的设置进行 AJAX 调用,不如使用data:JSON.stringify({data:{username:"",password:""}).

于 2013-12-06T00:33:22.207 回答