我不知道如何处理调用 ASP.NET MVC 时 jquery ajax POST 错误“ERR_CONNECTION_REFUSED”

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

我尝试使用 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 的第一个问题,所以如果我在某些方面有所欠缺,请告诉我。

c# jquery ajax asp.net-mvc asp.net-core
1个回答
0
投票

提醒一下,如果您创建 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>

© www.soinside.com 2019 - 2024. All rights reserved.