首页 > 解决方案 > Ajax 调用发布 0 或 null

问题描述

无法弄清楚这个简单的ajax调用。控制器按原样成功返回 json 文件,但将两个零记录为国家和金额的值,这是不正确的。我在这里做错了什么?

控制器:

[HttpPost("search")]
public IActionResult test(int country, int amount)
{
    System.Console.WriteLine(country);
    System.Console.WriteLine(amount);
    return Json("success : true");
}

jQuery:

var data = "{ 'country': 2, 'amount': 4}";

$.ajax({
    url: "search",
    type: "POST",
    data: data,
    cache: false,
    contentType: "application/json",
    success: function (data) {
        alert("hi"+ data);
    }
});

标签: c#jsonasp.net-coreasp.net-core-mvc

解决方案


创建一个模型来保存所需的值

public class TestModel {
    public int country { get; set; }
    public decimal amount { get; set; }
}

[FromBody]使用属性更新操作以期望请求正文中的数据

[HttpPost("search")]
public IActionResult test([FromBody]TestModel model) {
    if(ModelState.IsValid) {
        var country = model.country;
        var amount = model.amount;
        System.Console.WriteLine(country);
        System.Console.WriteLine(amount);
        return Ok( new { success = true });
    }
    return BadRequest(ModelState);
}

客户端您需要确保数据以正确的格式发送

var data = { country: 2, amount: 4.02 };

$.ajax({
    url: "search",
    type: "POST",
    dataType: 'json',
    data: JSON.stringify(data),
    cache: false,
    contentType: "application/json",
    success: function (data) {
        alert("hi"+ data);
    }
});

ASP.NET Core 中的参考模型绑定


推荐阅读