for循环中的数组返回null。
当我这样做时:
abc.a = "1";
abc.b = "1";
abc.c = "1";
一切都很好。 但是这会返回null:
for (var i = 0; i < 3; i++) {
abc[i] = "1";
}
Mvc控制器:
public class abcController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(abc val)
{
return View();
}
}
MODEL mvc abcCLASS:
public class abc
{
public string a {get;set;}
public string b { get; set; }
public string c { get; set; }
}
Html + Jquery
我希望for也可以。
为什么在for循环中对象返回null?
<input type="button" id="bbb"/>
<script>
var abc = { a: "", b: "", c: "" };
$("#bbb").click(function () {
// This not working:
for (var i = 0; i < 3; i++) {
abc[i] = "1";
}
// This working:
abc.a = "1";
abc.b = "1";
abc.c = "1";
$.ajax({
url: '/abc/index',
type: "POST",
dataType: 'json',
traditional: true,
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(abc),
success: function (response) {
console.log(response);
}
});
});
</script>
答案 0 :(得分:0)
您尝试为对象的每个元素分配一些值。问题是,你试图像对待数组一样对待那个对象,认为JS会神奇地理解你想要做什么。它赢了。
实际做你想做的一种可能的方法:
for (var i in abc) if (abc.hasOwnProperty(i)) {
abc[i] = "1";
}
这种方式a
,b
,c
abc
对象的属性将获得&#34; 1&#34;值。就目前而言,您改为更改0
,1
,2
属性(是的,那些是JS中对象属性的有效名称;它们更常用于数组中,不过)。