一般分3种
服务器端:
[HttpPost]
public IActionResult Fill([FromBody] dynamic data)
{
string a=data.amount;
}
只能接收一个参数,无法把json分解成多个参数,也许是因为json里可能包含多层数据。必须使用[FromBody]才能解析出来。
这里的dynamic可以换成一个具体的类
JS:
var data = {
amount: 10,
name: 'liu min'
};
$.ajax({
url: '/FillMoney/Fill',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(data),
success: function (data) {
}
});
服务端: 有三种写法
//写法1
[HttpPost]
public IActionResult Fill([FromForm] Pay data)//这里不能用dynamic,必须指定类型
{
string a = data.amount;
return Content("OK");
}
.....
public class Pay{
public string amount{get;set;}
//public string amount;//这样是错误的,会娶不到值,必须定义成属性
public string name{get;set;}
}
........
//写法2
[HttpPost]
public IActionResult Fill(string amount)//这里的参数名称必须和调用方一致
{
string a = amount;
return Content("OK");
}
//写法3
[HttpPost]
public IActionResult Fill()
{
string a = Request.Form['amount']; //用这种方式更方便,不需要定义一个类
return Content("OK");
}
错误写法:
[HttpPost]
public IActionResult Fill([FromBody] Pay data)
{
string a = data.amount;
return Content("OK");
}
这种写法调用方会收到415错误
JS:
var data = 'amount=10&name=liu min';//拼接字符串
};
$.ajax({
url: '/FillMoney/Fill',
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
data: data,
success: function (data) {
}
});
3.FORM 方式下传XML
后台:
[HttpPost]
public IActionResult Fill()//这里不能有参数,一旦有参数了,Request.Body就会被读取,而Request.Body只能被读取一次,后面就无法再读了
{
string body = new StreamReader(Request.Body).ReadToEnd();
//解析body中的XML
return Content("OK");
}
注意:这里不能有参数,一旦有参数了,Request.Body就会被读取,而Request.Body只能被读取一次,后面就无法再读了
Request.Body存放的是请求原始数据,一旦设置参数就会从Body里取数据。
JS:
var data = '<test><result>ok</result></test>';//拼接字符串
};
$.ajax({
url: '/FillMoney/Fill',
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
data: data,
success: function (data) {
}
});