Skip to main content
 首页 » 编程设计

c#之Ajax 调用正在发布 0 或 null

2024年01月26日3752php

无法理解这个简单的 ajax 调用。 Controller 按预期成功返回 json 文件,但记录了两个零作为国家和金额的值,这是不正确的。我在这里做错了什么?

Controller :

[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); 
    } 
}); 

请您参考如下方法:

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

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); 
    } 
}); 

引用 Model Binding in ASP.NET Core