我想更新服务器的确认列表,并使用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。
我做错了什么?
提前致谢!
答案 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)