【问题标题】:Json Array return nullJson 数组返回 null
【发布时间】:2015-01-21 03:17:35
【问题描述】:

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();
  }
}

模型 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>

【问题讨论】:

  • 是什么让您认为abc[0] = "1"abc.a = "1"; 相同?
  • 请不要对非引用的内容使用引用格式。
  • for 循环如何可能工作 - 它生成一个数组。您发回接受对象而不是集合的控制器方法!
  • 它适用于 webforms,mvc 不同

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


【解决方案1】:

您正在尝试为对象的每个元素分配一些值。问题是,您试图将该对象视为一个数组,认为 JS 会神奇地理解您想要做什么。不会的。

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

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

这样abc 对象的abc 属性将获得“1”值。就目前而言,您改为更改 012 属性(是的,这些是 JS 中 Object 属性的有效名称;然而,它们更常用于数组中)。

【讨论】:

  • 我只想运行一半的数组,我需要我
  • 您将哪一部分数据称为array
猜你喜欢
  • 2016-04-09
  • 1970-01-01
  • 2015-04-17
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 2017-07-20
  • 2021-08-11
相关资源
最近更新 更多