我正在编写一个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发送,效果很好。我不知道这个问题。
但是当我使用$ .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),成功:函数(结果){/*...*/}});