c#
  • web-applications
  • asp.net-web-api
  • 2016-01-06 74 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

    相關問題