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

    Использование C# web api server.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 я использовать 'Advanced Rest Client', который является плагин от Google Chrome я получаю моя просьба совершенно прекрасна. Но, если я отправлю этот же запрос (я вижу в области сети в окне отладки хром), то полезная нагрузка одинакова, запрос поступает, но все поля внутри являются нулевыми.

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

    Я также попытался удалить '=' от клиента JSon, но я заметил, большинство ответа ведет к этим добавки (хотя они никогда не говорили, что предполагают, чтобы быть обернуто с апострофом, но в остальном он не работает). Пытался добавить contentType-application/json в обоих заголовках или в поле is-is в запросе ajax.

    TIA.

    ответ

    2

    В запросе АЯКС указать

    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

    Смежные вопросы