从javascript ajax调用

时间:2016-12-30 09:15:26

标签: ajax post wcf-rest

嗨,我很擅长实施Restful服务。我在stackoverflow和msdn中进行POST时研究了类似的问题,但提供的解决方案并没有解决我的问题。

最初我收到错误400(错误请求)以及以下内容。请注意,我在相关帖子中建议的contenttype中有application / json。

function sendStartData() {
var gameID = global_GetCookie("gameID");
var eventID = global_GetCookie("eventID");
var urlVal = GetBaseURL()+"/event/"+eventID+"/start";
var dataPayload = {"gameID ":gameID,"timestamp":+new Date()};
var stringDataPayload = JSON.stringify(dataPayload);
$.ajax({
        type: 'POST',
        url: urlVal,
        contentType: "application/json; charset=utf-8",
        data: stringDataPayload,
        success: function (data) {},
        error: function (data) {},
        dataType: 'JSON'
});

}

然后我读了一篇关于bodystyle裹/裸的帖子,然后我将我的datapayload修改为

var dataPayload = {"entity":{"someID ":someID,"timestamp":+new Date()}};

现在该服务在visual studio中被点击,它不再在chrome控制台中返回错误400。但问题是参数充满了空,尽管我可以从javascript看到它填充了正确的值。我还尝试将 BodyStyle = WebMessageBodyStyle.Wrapped 添加到我的 webinvoke 中,但随后整个第二个参数 EventInfo newData 变为空而不是填充空值。另一方面,添加 BodyStyle = WebMessageBodyStyle.Bare 让我回到错误400(错误请求)

我的服务功能在

之下
    [OperationContract]
    [WebInvoke(Method = "POST",
               UriTemplate = "/event/{eventID}/start",
               RequestFormat = WebMessageFormat.Json,
               ResponseFormat = WebMessageFormat.Json)]
    void gameStarted(String eventID, EventInfo newData);

我的数据合同类是

[DataContract]
public class EventInfo
{
    [DataMember]
    public int gameID { get; set; }

    [DataMember]
    public int timestamp { get; set; }
}

感谢任何帮助。我想在服务器端正确接收我的数据。提前谢谢。

0 个答案:

没有答案