【问题标题】:c# web api post request nullc# web api post请求null
【发布时间】:2016-04-10 16:10:27
【问题描述】:

使用 c# web api 服务器。

我的客户电话如下:

$.ajax({
    type: method,
    url: urls.server + url,
    data: (method === "POST" ? '='+JSON.stringify(data) : data),
    dataType: "json",
    success: function(data){
        callback(data);
    },
    error: function(err) {
        onError(err);
    }
});

我的 C# 服务器方法如下所示:

[HttpPost, Route("All/GetMyTeam")]
public POST_GetMyTeam_Response Post(GetMyTeam_Request request)
{
    return new POST_GetMyTeam_Response();
}

现在,每当我使用 Google 的 Chrome 插件“高级休息客户端”时,我的请求都非常好。 但是,如果我发送同样的请求(我在 chrome 的调试窗口中的网络区域看到),有​​效负载是相同的,请求到达但里面的所有字段都是空的。

public class GetMyTeam_Request
{
    public string UserId;
    public string TeamId;
}

我还尝试从 json 客户端中删除 '=',但我注意到大多数答案都导致了这个添加(尽管他们从未告诉它应该用撇号包装,但否则它不起作用)。 尝试在 ajax 请求中的两个标头或原样字段中添加 contentType-application/json ..

TIA。

【问题讨论】:

    标签: c# web-applications asp.net-web-api


    【解决方案1】:

    在你的ajax请求中指定

    contentType: 'application/json'
    

    您也不需要在 json 字符串数据之前附加 "=" 字符串

    data: (method === "POST" ? '='+JSON.stringify(data) : data),
                             //^^^^ here
    

    删除= 符号,它应该可以工作。

    $.ajax({
        type: method,
        url: urls.server + url,
        data: (method === "POST" ? JSON.stringify(data) : data),
        dataType: "json",
        contentType: 'application/json',
        success: function(data){
            callback(data);
        },
        error: function(err) {
            onError(err);
        }
    });
    

    【讨论】:

    • 我无话可说……我想我检查了 7 次。用那个****尝试了所有可能的序列,谢谢。我会尽可能接受
    • 不客气,还有一点需要注意,如果您传递的数据类型不是 json,您可能需要将 contentType 设置为空字符串或其他相关类型。
    猜你喜欢
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2020-07-06
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 2016-05-12
    相关资源
    最近更新 更多