从视图到控制器的 AJAX 对象不包含数据



> I .net core 2.2 这是对象 对象:

[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 的对象

理想情况下,您不应该将对象传递给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

最新更新