2015-09-04 64 views
0

我想提出一个后调用这样的服务,邮政查询对象名称不包括在内?

var ms = [], url = myServer + "/government.svc/Users/Add"; 
ms.push({ 
    ID: 210, 
    UserID: "S-1-691534-18", 
    Role: "1", 
    StartDate: myUser.startDate, 
    UpdateM: true 
}); 

var user = { 
    Email: myUser.desc, 
    FirstName: myUser.FN, 
    LastName: myUser.LN, 
    Memberships: ms, 
    .. added all other properties like this "PropertyName" : "" 
}; 
console.log(JSON.stringify(user)); 

$.ajax({ 
    url: url, 
    type: "POST", 
    data: JSON.stringify({ pUser: user }) + '}', 
    contentType: "application/json; charset=utf-8" 
}) 

字符串化后,我在控制台收到此

"{"pUser": 
{ 
"ID":"S-1-691534-18", 
"Email":""[email protected]", 
"FirstName":"User", 
"LastName":"One", 
"Memberships":[{"ID":"210","UserID":"S-1-691534-18","Role":"1","StartDate":"04/09/2015","UpdateM":true}], 
"Username":"", 
"Phone":"", 
"Mobile":"", 
"AddressID":"", 
"Address":"", 
"Photo":"", 
"Bio":"", 
"Notes":"", 
"EmailNotes":"", 
"IsNaugthy":"", 
"CurrentMembershipID":"", 
"MembershipStatus":"", 
"OtherDate":"", 
"MemAckwww":"", 
"EatHabbits":"" 
} 
}" 

我的服务器端方法,

[OperationContract] 
    [WebInvoke(Method = "POST", UriTemplate = "/Users/Add")] 
    UserDetails AddUser(User pUsers); 

错误

400 - 请求不好。

我在WCF调试服务器端的时候得到了pUser的空值,所以我想我需要发送上面的var用户对象作为用户对象而不是一个长字符串?

我的WCF数据契约

我的服务器端有很多数据成员又是什么我送,我不明白这是如何创建一个问题?

我是否必须在我的客户端代码中匹配所有成员以使其工作?

编辑

我的服务器端类,

public class User 
{ 
    [DataMember] 
    public string ID; 
    [DataMember] 
    public string Username; 
    [DataMember] 
    public string FirstName; 
    [DataMember] 
    public string LastName; 
    [DataMember] 
    public string Phone; 
    [DataMember] 
    public string Mobile; 
    [DataMember] 
    public string Email; 
    [DataMember] 
    public int? AddressID; 
    [DataMember] 
    public string Address; 
    [DataMember] 
    public string Photo; 
    [DataMember] 
    public string Bio; 
    [DataMember] 
    public string Notes; 
    [DataMember] 
    public string EmailNotes; 
    [DataMember] 
    public int IsNaugthy; 
    [DataMember] 
    public int CurrentMembershipID; 
    [DataMember] 
    public string MembershipStatus; 
    [DataMember] 
    public string OtherDate; 
    [DataMember] 
    public int? MemAckwww; 
    [DataMember] 
    public Membership[] Memberships; 
    [DataMember] 
    public Eat[] EatHabbits; 
} 
+1

您是否曾尝试像'JSON.stringify({pUser:user})'一样向服务器发送数据? –

+0

@pala畲刚刚做过,仍然为我的WCF服务器端的pUser获得空值 – Mathematics

+0

你能打你行动吗?例如,如果你有一个像这样的简单方法String Test(int id),你可以点击吗?你的用户类是否与你要发布的json对象(属性名称和类型)匹配? –

回答

1

你的行动期待参数pUsers。您正在发送一个参数名称为pUser的对象。

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "/Users/Add")] 
UserDetails AddUser(User pUsers); 

发送的是不属于可空类型的模型的任何属性具有相应的值的数据时,其他的型号更改您的服务器端方法

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "/Users/Add")] 
UserDetails AddUser(User pUser); //changed parameter name 

此外,确保活页夹会感到不安。