【问题标题】:ajax object from view to controller not containing data从视图到控制器的 ajax 对象不包含数据
【发布时间】:2023-03-27 08:30:01
【问题描述】:

> 我.net core 2.2 这个是object Object:

[Serializable]
public class oob
{
   public int i { get; set; }
   public string j { get; set; }
}

这是名为 Gett 的“Home”控制器中的操作,它将 oob 作为 ajax 的输入

 [HttpGet]
public IActionResult Gett(oob ww)
{
    return Ok(ww);
}

阿贾克斯

    {
        $.ajax({
            type: "Get",
            url: "Home/gett",
            data: { ww: JSON.stringify({i:55,j:"weqe"})},
            dataType: "json",
            contentType:"json",
            success: function (f) {
                console.log(f);
            },
            error: function (f) {
                console.log(f);
            }
        });
    });

当发出请求时,在 Gett(oob ww) 我得到一个值为 i=0 且 j=null 的对象

【问题讨论】:

  • 你的意思是:返回 Ok(ww) 而不是 OK(i)。对吗?
  • 对不起@阿卜杜拉迪巴斯
  • 试试 ContentType 'application/json'

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


【解决方案1】:

理想情况下,您不应该将对象传递给GET 请求,对于发布对象,您应该使用POST

如果你仍然想要,你需要改变你的 GET 方法,如下使用FromQuery

[HttpGet]
public IActionResult Gett([FromQuery] oob ww)
{
    return Ok(ww);
}

然后更改您的AJAX 呼叫,如下所示。

$.ajax({
            type: "Get",
            url: "Home/gett",
            data: {i:55,j:"weqe"},
            dataType: "json",
            contentType:"json",
            success: function (f) {
                console.log(f);
            },
            error: function (f) {
                console.log(f);
            }
        });

注意:如果您将FromQuery 用于您的API,则传递不需要的对象JSON.stringify

【讨论】:

  • 你能把 data:{ ww: JSON.stringify({i:55,j:"weqe"})} 改成 data:JSON.stringify({i:55,j:"weqe" })
  • .net core 2.2 MVC 控制器
  • 只需更改数据:{i:55,j:"weqe"},我在本地测试过并且可以正常工作
  • 并使用 [FromQuery]
猜你喜欢
  • 2013-05-12
  • 1970-01-01
  • 2016-05-01
  • 2014-04-27
  • 2015-02-17
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
相关资源
最近更新 更多