WCF服务方法中发送的JSON参数为null

时间:2014-07-25 08:22:03

标签: c# jquery ajax json wcf

我想更新服务器的确认列表,并使用jQuery中的ajax。

问题在于我发送数据(在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);

在Fiddler中,我看到了列表,从JSON字符串化,以及accessToken。

我做错了什么?

提前致谢!

2 个答案:

答案 0 :(得分:0)

我是json的新手,但我遇到了类似的问题。

我从服务器端看(REST WCF)。

我找到的“解决方案”是在json字符串的开头添加方法名称。

在你的情况下,我建议的json字符串应该是:

  

{“UpdateConfirmationListforAttender”:{“accessToken”:'+ JSON.stringify(accessToken)+',“list”:'+
  JSON.stringify(confirmationList)+'}   }

我还在寻找更“通用”的解决方案,因此我的WCF可以获取参数,而无需在客户端注入方法名称。

答案 1 :(得分:0)

尝试将UriTemplate更改为此

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

然后从Ajax调用中删除data:部分并将URL更新为此

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