我有一个jQuery向控制器发布数据:
$.ajax({
url: "/Api/MyDefaultApi/SaveElections",
type: "POST",
data: JSON.stringify(this.state.data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (resp) {
showAlert("success", resp);
}
}).fail((err) => {
showAlert("danger", err);
});
顺便说一下," this.state.data"变量是这样的数组:
[{prop1: "hello", prop2: "world", prop3: "!!"}, {{prop1: "hello1", prop2: "world1", prop3: "!!1"}, {{prop1: "hello2", prop2: "world2", prop3: "!!2"}]
一切似乎都很好,除了这里有两个问题:
在下面的控制器中,'数据'传入的是null。但是,我可以看到' this.state.data'不是空的。
[System.Web.Http.HttpPost]
public async Task<IHttpActionResult> SaveElections([FromBody]string[] data) {
try
{
//do something
}
catch (Exception ex)
{
//something went wrong
}
}
如何解决上述2个问题?提前谢谢!
答案 0 :(得分:0)
在这些类型的错误上,尝试使用静态数据并查看它是否出现:
data: JSON.stringify(["this","is","a","test"]),
并尝试:
data: ["this","is","a","test"],
如果这样可行,则问题出在您的javascript状态对象中。
如果这不起作用。您可以查看chrome开发人员控制台网络选项卡,查看实际发送到服务器的内容。
您的json似乎是array of Objects
或c#条array of Dictionary
,而您的C#需要Array of Strings
!
答案 1 :(得分:0)
在发送之前验证您的JSON。
以下是this.state.data
对象的外观。
[{
"prop1": "hello",
"prop2": "world",
"prop3": "!!"
},
{
"prop1": "hello1",
"prop2": "world1",
"prop3": "!!1"
},
{
"prop1": "hello2",
"prop2": "world2",
"prop3": "!!2"
}]