【问题标题】:400 Bad Request on Post .Net Core API via Ajax通过 Ajax 发布 .Net Core API 的 400 错误请求
【发布时间】:2020-03-11 13:12:23
【问题描述】:

我正在尝试使用 ajax 调用一个简单的方法,如下所示:

[Route("v1/[controller]")]
[ApiController]
public class FooController : Controller
{   [HttpPost]
    public FooDTO Add(Foo Foo)
    {
       FooDTO  objFooDTO   = null;
     }
}

public class Foo 
{
    public int ID {get; set;}
    public string Title {get; set;}
}

Ajax 请求如下:

var obj = {
            "ID": 0,
            "Title": "Foo Bar"
        }
    $.ajax({
        type: "POST",
        url: "http://localhost:8001/v1/Foo",
        data: obj,
        async: false,
        dataType: "Json",
        crossDomain: true,
        contentType: 'application/x-www-form-urlencoded',
        cache: false,
        success: function (resp) {

        },
        error: function (e) {

        }
    });

它与POSTMAN 一起工作正常,但是当我尝试通过ajax 访问时,错误是400 错误请求The input is not valid。有什么我想念的吗? jquery 版本是1.12.0

【问题讨论】:

  • 你能发布一个邮递员截图,网址可见吗?你在 ajax 中的 url 不应该是: url: "localhost:8001/v1/Foo/Add" 吗?
  • @Nemanja Todorovic 不,它不应该是 /Add 我已经设置了一个路由 [Route("v1/[controller]")]
  • @Nemanja Todorovic 我从邮递员那里打来的同一个网址
  • 你没有用HttpPostAttribute装饰Add方法。
  • @Chris Pickford 抱歉,我在发布问题时错过了它。刚刚更新。

标签: c# ajax asp.net-core .net-core


【解决方案1】:

看起来contentType 属性应该是application/json,因为您传递的是对象而不是表单数据。

另外,您应该使用JSON.Stringify 方法序列化数据对象,以便将javascript 对象转换为json。

【讨论】:

  • 你试过在你的ajax调用中用json.stringify方法序列化数据对象吗?
  • 它适用于application/jsonJSON.stringify
  • @Afnan,已修改。谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-10-08
  • 2020-11-15
  • 1970-01-01
  • 2021-08-18
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多