2015-09-04 59 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 

此外,確保活頁夾會感到不安。