2014-07-25 78 views
0

我想更新服務器的確認列表,我使用jQuery中的ajax。在WCF服務方法中發送JSON參數爲空

問題是我發送的數據(在Fiddler中查看),但該服務沒有得到該列表。

web方法的參數是一個字符串和一個列表。令牌是正確的,但列表爲空。

Ajax調用:

$.ajax({ 
    url: "http://localhost:8000/teamplay/externalclientrestservice.svc/UpdateConfirmationListforAttender?accessToken=" + accessToken, 
    type: "POST", 
    contentType: "application/json", 
    dataType: "json", 
    processData: false, 
    data: '{"accessToken": ' + JSON.stringify(accessToken) + ', "list": ' + JSON.stringify(confirmationList) + ' }' 
}).done(function (receivedList) 
    { 
    alert("Änderungen wurden erfolgreich übernommen"); 
    return receivedList; 
}).fail(function() 
    { 
    alert("Etwas ist schief gegangen. Bitte später erneut versuchen."); 
}); 

的WebMethod:

[OperationContract] 
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "UpdateConfirmationListforAttender?accesstoken={accessToken}")] 
    List<AppointmentConfirmationListItem> UpdateConfirmationListforAttender(string accessToken, List<AppointmentConfirmationListItem> list); 

在菲德勒我看到名單,從JSON字符串化和的accessToken。

我在做什麼錯?

在此先感謝!

+0

你是不是在指定的URI模板列表 – CSharper

回答

0

我是json的新手,但我遇到過類似的問題。

我正在從服務器端看(REST WCF)。

我找到的「解決方案」是在json字符串的開頭添加方法名稱。

在你的情況我建議的JSON字符串應該是:

{ 「UpdateConfirmationListforAttender」:{ 「的accessToken」: '+ JSON.stringify(的accessToken)+', 「清單」:「+
JSON.stringify(confirmationList)+'}}

我也仍然在尋找一個更‘通用’的解決方案,所以我的WCF可以得到參數不明確其在我的客戶端注入的方法名。

0

試着改變你的UriTemplate這個

UriTemplate = "UpdateConfirmationListforAttender/{accessToken}/{list}")] 

,然後從Ajax調用刪除data:部分並更新URL這個

url: "http://localhost:8000/teamplay/externalclientrestservice.svc/ 
     UpdateConfirmationListforAttender/JSON.stringify(accessToken)/JSON.stringify(confirmationList) 
相關問題