ajax post 在webapi中传递空参数
ajax post passes null parameter in webapi
这个问题之前有人提出过,通常的答案好像是:
- 将[FromBody]添加到参数
- 在post
中添加应用程序的内容类型/json
但这些都没有帮助。
当ajaxpost发生时,命中了webapi动作,但是参数为null
我有以下服务器端代码
[HttpPost]
[Route("SafeFloatTopUp")]
public void SafeFloatTopUp([FromBody] SafeFloatDenomination d )
{
//d is null
}
public class SafeFloatDenomination
{
public SafeFloatDenomination();
public string Denomination { get; set; }
public decimal Value { get; set; }
}
这是从以下客户端代码调用的:
var d = { Denomination: "1p", Value: 2 };
bankingApi.client.topUp(d);
var topUp = function (denomination) {
$.ajax({
url: '/portalframework/BackOffice/Banking/Banking/SafeFloatTopup',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: denomination
});
};
在下面找到答案Whosebug question
我需要使用
JSON.stringify(denomination)
您不需要指定内容类型 - 'application/x-www-form-urlencoded; charset=UTF-8' 的默认内容类型将处理 javascript 个对象而无需将它们转换为字符串:
$.ajax({
url: '/portalframework/BackOffice/Banking/Banking/SafeFloatTopup',
type: 'POST',
data: denomination
});
这个问题之前有人提出过,通常的答案好像是:
- 将[FromBody]添加到参数
- 在post 中添加应用程序的内容类型/json
但这些都没有帮助。
当ajaxpost发生时,命中了webapi动作,但是参数为null
我有以下服务器端代码
[HttpPost]
[Route("SafeFloatTopUp")]
public void SafeFloatTopUp([FromBody] SafeFloatDenomination d )
{
//d is null
}
public class SafeFloatDenomination
{
public SafeFloatDenomination();
public string Denomination { get; set; }
public decimal Value { get; set; }
}
这是从以下客户端代码调用的:
var d = { Denomination: "1p", Value: 2 };
bankingApi.client.topUp(d);
var topUp = function (denomination) {
$.ajax({
url: '/portalframework/BackOffice/Banking/Banking/SafeFloatTopup',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: denomination
});
};
在下面找到答案Whosebug question
我需要使用
JSON.stringify(denomination)
您不需要指定内容类型 - 'application/x-www-form-urlencoded; charset=UTF-8' 的默认内容类型将处理 javascript 个对象而无需将它们转换为字符串:
$.ajax({
url: '/portalframework/BackOffice/Banking/Banking/SafeFloatTopup',
type: 'POST',
data: denomination
});