POST-запрос работает на Почтальоне, но не использует jquery POST - PullRequest
0 голосов
/ 11 февраля 2020

Я пишу do tnet core web api, метод POST на контроллере выглядит следующим образом:

// POST: api/SurveyUserResponses
        [HttpPost]
        public async Task<IActionResult> PostSurveyUserResponse([FromBody] List<SurveyUserResponse> surveyUserResponse)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            _context.SurveyUserResponse.AddRange(surveyUserResponse);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (SurveyUserResponseExists(surveyUserResponse[0].UserId))
                {
                    return new StatusCodeResult(StatusCodes.Status409Conflict);
                }
                else
                {
                    throw;
                }
            }

            return new StatusCodeResult(StatusCodes.Status201Created);
        }

Это прекрасно работает 201 created, когда я использую Postman для отправки этого json:

[
    {
        "userId": 1,
        "qId": 1,
        "optionId": 0,
        "response": "Suryansh",
        "surveyCreatorOptions": null,
        "user": null
    },
    {
        "userId": 1,
        "qId": 2,
        "optionId": 0,
        "response": "suryansh",
        "surveyCreatorOptions": null,
        "user": null
    }

]

Но когда я использую $.post("https://localhost:44366/api/surveyuserresponses/postsurveyuserresponse",JSON.stringify(jsonArr)); Chrome, консоль показывает 400 (неверный запрос)

Чтобы выяснить проблему, я даже попытался скопировать данные формы и отправил это через почтальон работает просто отлично. Я не могу понять проблему.

1 Ответ

0 голосов
/ 12 февраля 2020

Но когда я использую $ .post ("https://localhost: 44366 / api / surveyuserresponse / postsurveyuserresponse ", JSON .stringify (jsonArr));

Поскольку ваш сервер ожидает полезную нагрузку JSON, для запроса необходимо указать заголовок Content-Type:

$.ajax({
    type: "POST",
    url: "https://localhost:44366/api/surveyuserresponses/postsurveyuserresponse",
    <b>contentType: "application/json",</b>,
    data: JSON.stringify(jsonArr),
    success: function(result){  /*...*/  }
});
...