POST请求适用于Postman,但不使用jquery POST

问题描述 投票:0回答:1

我正在编写一个dotnet核心网络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);
        }

当我使用邮递员发送此json时,此功能很好201 created

[
    {
        "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(错误请求)

为了解决问题,我什至尝试复制form data并通过Postman发送,效果很好。我不知道这个问题。

api asp.net-core post asp.net-web-api postman
1个回答
0
投票

但是当我使用$ .post(“ https://localhost:44366/api/surveyuserresponse/postsurveyuserresponse”,JSON.stringify(jsonArr));

由于服务器需要JSON的有效负载,因此您需要为请求指定标头Content-Type

$ .ajax({输入:“ POST”,网址:“ https:// localhost:44366 / api / surveyuserresponses / postsurveyuserresponse”,contentType:“ application / json”,,数据:JSON.stringify(jsonArr),成功:函数(结果){/*...*/}});
© www.soinside.com 2019 - 2024. All rights reserved.