c#
  • web-applications
  • asp.net-web-api
  • 2016-01-06 68 views 3 likes 
    3

    使用c#web api服务器。c#web api post request null

    我的客户呼叫的样子:

    $.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(); 
    } 
    

    现在,whenver我用的是 '高级REST客户端',这是谷歌的Chrome插件,我得到我的要求非常好。 但是,如果我发送相同的请求(我在网络的区域看到了chrome的调试窗口),有效载荷是相同的,请求到达但内部的所有字段为空。

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

    我也试图从JSON客户端删除的'='但我注意到大多数的回答是导致这一增加(尽管他们从来没有告诉它想用撇号包裹,但除此之外,它不工作)。 试图在ajax请求的头文件或原文字段中添加contentType-application/json ..

    TIA。

    回答

    2

    在您的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); 
        } 
    }); 
    
    +1

    我没有词语来形容......我想我检查了7次。尝试所有可能的序列与****,谢谢。我会尽可能地接受 –

    +0

    欢迎您也注意一点,如果您传递的数据类型不是json,您可能希望将contentType设置为空字符串或其他相关类型。 – Habib

    相关问题