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

I don't know how to deal with jquery ajax POST error "ERR_CONNECTION_REFUSED" when calling ASP.NET MVC

提问人:cody 提问时间:10/24/2023 最后编辑:Tiny Wangcody 更新时间:10/24/2023 访问量:105

问:

我尝试使用 jQuery 和 Ajax 调用我的 ASP.NET MVC 应用程序,在后端 (SQL Server) 中创建一个新条目,但 Google Chrome 控制台显示错误POST

无法加载资源:net::ERR_CONNECTION_REFUSED

我做了一个命令,它工作得很好。GET

这是我的 jQuery Ajax 用于我的 POST 调用

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 核心

评论

1赞 Selvin 10/24/2023
端点 url 错误?
0赞 b166er 10/24/2023
@Selvin说的是,调用的是 localhost:7206/api/Owner,终结点是 CreateOwner
0赞 cody 10/24/2023
嘿,我使用 swagger 控制器运行相同的 POST 调用并且它工作正常,我检查了端点,它是 localhost:7206/api/Owner?locationId=25,如果我使用 swagger UI,一切都很好
0赞 Captain Kenpachi 10/24/2023
帮我一个忙,尝试返回(代码 204)而不是(代码 200)。让我们看看它有什么作用NoContent("Successfully created")Ok("Successfully created")
0赞 Captain Kenpachi 10/24/2023
或者添加到方法属性中[ProducesResponseType(200)]

答:

0赞 Qiang Fu 10/24/2023 #1

只需提醒一下,如果您创建 api 控制器,您需要删除属性才能使 ajax 工作。[ApiController]

我测试了您的代码并且运行良好。也许您可以尝试遵循简单的方法。

    [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>

enter image description here