无法弄清楚这个简单的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);
}
});
答案 0 :(得分:3)
创建一个模型以保存所需的值
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);
}
});
答案 1 :(得分:2)
JSON.stringify
将对象转换为json字符串。请勿尝试使用字符串串联来做到这一点。decimal
。Json
。[HttpPost("search")]
public IActionResult test(int country, decimal amount)
{
System.Console.WriteLine(country);
System.Console.WriteLine(amount);
// return an anymous object instead of a string
return Json(new {Success = true});
}
jQuery:
var data = JSON.stringify({country: 2, amount: 4.02});
$.ajax({
url: "search",
type: "POST",
dataType: 'json',
data: data,
cache: false,
contentType: "application/json",
success: function (data) {
alert("hi"+ data);
}
});
答案 2 :(得分:1)
我在这里做什么错了?
4.02
不是必需的,因此您可以忽略它。
int
不是decimal
,因此您应该将其替换为contentType
和application/json
应该是=IMPORTXML(A1, "//*[local-name()='BusinessNameLine1Txt']")
答案 3 :(得分:0)
谢谢大家!在您的帮助下可以正常工作。
删除[FromBody]后将无法正常工作
[HttpPost("search")]
public IActionResult test([FromBody] string data)
{
System.Console.WriteLine(data);
return Json(new {Success = true});
}
jQuery:
var data = JSON.stringify("{ 'data': 'THOMAS' }");
$.ajax({
url: "search",
type: "POST",
data: data,
cache: false,
contentType: "application/json",
success: function (data) {
alert("hi"+ data);
}
});