我尝试使用 jQuery 和 Ajax 对我的 ASP.NET MVC 应用程序进行
POST
调用,在后端 (SQL Server) 创建一个新条目,但 Google Chrome 控制台显示错误
无法加载资源:net::ERR_CONNECTION_REFUSED
我执行了
GET
命令,效果很好。
这是我用于 POST 调用的 jQuery Ajax
function insert() {
$(document).ready(function() {
var ownerCreate = {
owner : $("input[name=emailfm]").val(),
testModelArea : $("input[name=subjecttitle]").val()
}
$.ajax({
url: "https://localhost:7206/api/Owner?locationId=" + $("input[name=firstname]").val(),
type: "POST",
// dataType: "json",
data: JSON.stringify(ownerCreate),
headers: {
'Content-Type': 'application/json',
},
success:function(response){
if(response == 1){
alert("Data Added Successfully");
}
else {
alert("placeholder error");
}
}
});
});
}
这是我使用 jQuery Ajax 调用的 ASP.NET MVC
POST
方法:
[HttpPost]
[ProducesResponseType(204)]
[ProducesResponseType(400)]
public IActionResult CreateOwner([FromQuery] int locationId, [FromBody] OwnerDto ownerCreate)
{
if (ownerCreate == null)
{
return BadRequest(ModelState);
}
var owner = _ownerRepos.GetOwners()
.Where(t => t.Owner.Trim().ToUpper() == ownerCreate.Owner.TrimEnd().ToUpper())
.FirstOrDefault();
if (owner != null)
{
ModelState.AddModelError("Model Owner", "Owner already exists");
return StatusCode(422, ModelState);
}
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var ownerMap = _mapper.Map<ConnectTestModel1>(ownerCreate);
ownerMap.Location = _locationRepos.GetLocation(locationId);
if (!_ownerRepos.CreateOwner(ownerMap))
{
ModelState.AddModelError("Error", "Can't save");
return StatusCode(500, ModelState);
}
return Ok("Successfully created");
}
使用 jQuery Ajax 时,我填写了 locationId、Owner 和 testModelArea 并通过按钮发送。 Google Chrome 控制台说我的有效负载已通过,我遇到的唯一问题是连接错误。
这是我使用 Stackoverflow 的第一个问题,所以如果我在某些方面有所欠缺,请告诉我。
提醒一下,如果您创建 api 控制器,则需要删除
[ApiController]
属性才能使 ajax 工作。
我测试了你的代码并且运行良好。也许你可以尝试以下简单的方法。
[Route("api/[controller]")]
public class OwnerController : ControllerBase
{
[HttpPost]
public void CreateOwner(int locationId, OwnerDto ownerCreate)
{
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
var ownerCreate = {
owner : "testowner",
testModelArea : "testmodel"
}
$.ajax('https://localhost:7275/api/owner', {
type: 'POST',
data: {
locationId:7,
ownerCreate:ownerCreate
}
});
</script>