Json数组返回null

时间:2014-11-23 09:26:31

标签: javascript jquery json asp.net-mvc-5

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>

1 个答案:

答案 0 :(得分:0)

您尝试为对象的每个元素分配一些值。问题是,你试图像对待数组一样对待那个对象,认为JS会神奇地理解你想要做什么。它赢了。

实际做你想做的一种可能的方法:

for (var i in abc) if (abc.hasOwnProperty(i)) {      
  abc[i] = "1";
}

这种方式abc abc对象的属性将获得&#34; 1&#34;值。就目前而言,您改为更改012属性(是的,那些是JS中对象属性的有效名称;它们更常用于数组中,不过)。