我只是想将一个数组对象从我的javascript传递给控制器。虽然达到警报它给复选框值,所以我相信javascript没有错。在控制器中,对象始终为null。我在这里做错了什么?
function amal() {
var selected = [];
$('input[type="checkbox"]:checked').each(function () {
selected.push($(this).val());
});
alert(selected);
$.ajax({
url: "http://localhost:63138/api/Emptbles/LoadAmal",
type: "POST",
data: selected,
contentType: "application/json",
success: function (response) {
alert("success");
myFunction();
},
error: function () {
}
});
我的api控制器
[HttpPost]
public IHttpActionResult LoadAmal(List<selectedSymptoms>list)
{
string item1 = "";
string item2 = "";
string item3 = "";
for (int i = 0; i < list.Count; i += 3)
{
//grab 3 items at a time and do db insert,
// continue until all items are gone..
item1 = list.ElementAt(i+0).ToString(); ;
item2 = list.ElementAt(i + 1).ToString(); ;
item3 = list.ElementAt(i + 2).ToString(); ;
// use the items
}
string query = "EXEC Add_Employee'" + item1 + "','" + item2 + "','" + item3 + "'";
int result = connectionProvider.CreateSomething(query);
return Ok(result);
}
我的selectedSymptoms类(我不知道这是否正确,只想将jason对象带给控制器。谢谢)
public class selectedSymptoms
{
public void PassThings(List<selectedSymptoms> symtoms)
{
var t = symtoms;
}
}
答案 0 :(得分:0)
您遇到的情况是您发送的对象与Web API之间的序列化问题。微软gives you code to test this process,我建议你使用它,因为它会教你很多东西。
您在回复中发送的内容可能如下所示:
["someValue1", "someValue2", "etc"]
您的API中的Type
需要是可序列化的,并且在您当前的课程中没有可能的方法。如果您只想发送一个字符串列表,那么您根本不应该使用复杂对象,只需使用List<string>
即可。如果您确实想要使用复杂对象,则需要使用属性将数据映射到。
如果我上课了
public class Person
{
public string Name {get; set;}
}
我想发布一个javascript对象表示,我的代码看起来像:
var people = [];
$('input[type="checkbox"]:checked').each(function () {
var Person = new Object();
Person.Name = $(this).val();
people.push(Person);
});
$.ajax({
url: "http://localhost:63138/api/Emptbles/LoadAmal",
type: "POST",
data: people,
contentType: "application/json",
success: function (response) {
},
error: function () {
}
});
您可以看到我们基本上是如何创建一个JavaScript版本的C#类数组,它可以轻松地在两个对象之间映射Name
属性。
API看起来像:
public IHttpActionResult GetStuff(List<Person> peeps) {}
答案 1 :(得分:-1)
试试这个:
data: { 'list' : selected }