大家好,问个mvc4 webapi 的问题 谢谢,请进
初识WebApi 请教个问题
请问在 Controller Action里 , 如何接收 前端ajax post 的 json 数据?
例如:
前端:
$.ajax({
type: "post",
url: "http://localhost:2896/api/TestApi",
data: [{"N":"aaa","A":"bbb"},{"N":"ccc","A":"ddd"}],
dataType: "json",
success: function (content) {
},
error: function (con) {
}
});
Post 了 [{"N":"aaa","A":"bbb"},{"N":"ccc","A":"ddd"}] 这个Json
后端 Controller 里
[HttpPost]
public void SetTestMethod(List<TestC> value)
{
理论上 在这里 value 的count 应该是 2 有两条数据
可实际上 断点到这里 value 的 count 是 0
请问如何解决???????????????????????????
}
public class TestC
{
public String N { get; set; }
public String A { get; set; }
}
[解决办法]
data: [{"N":"aaa","A":"bbb"},{"N":"ccc","A":"ddd"}],
=>
data: [{N:"aaa",A:"bbb"},{N:"ccc",A:"ddd"}],
[解决办法]
关键是$.ajax默认post的时候content-type=application/x-www-form-urlencoded
这个时候 data: jsonObject 时候,无法正确的进行form-urlencoded.
假设,服务端服务如下:
[HttpPost]
public JsonResult PostTest([FromBody]TestObj[] testObjs)
{
JsonResult result = new JsonResult { Status = 0, Result = string.Format("get list count: {0}", testObjs.Length) };
return result;
}
$(function () {
$("#btnTest").click(function () {
$.ajax({
url: "api/values",
type: "POST",
dataType: "json",
data: [{ "A": "a", "B": "b" }, { "A": "a1", "B": "b1" }],
success: function (data) {
alert(JSON.stringify(data));
},
error: function (data) {
alert(JSON.stringify(data));
}
});
});
});
$(function () {
$("#btnTest").click(function () {
$.ajax({
url: "api/values",
type: "POST",
dataType: "json",
contentType: "application/json",
//processData: false,
data: JSON.stringify([{ "A": "a", "B": "b" }, { "A": "a1", "B": "b1" }]),
success: function (data) {
alert(JSON.stringify(data));
},
error: function (data) {
alert(JSON.stringify(data));
}
});
});
});
[HttpPost]
public void SetTestMethod(IEnumerable<TestC> value)
{
}