我正在使用AngularJS并尝试将数据发送到我的后端。
我注意到当我的服务中的变量具有此结构test = [Object, Object]
时,它会被传递到我的ASP.NET后端中的List<String>
,但是我无法将test = Array(2)
传递到我的后端。
我在调试时看到格式并在变量上设置断点。
这两者有区别吗?感谢
答案 0 :(得分:3)
第一种情况:
var x = { foo: "bar", qux: 123 };
var y = { baz: "123", yeen: { arr: [1,2,3] };
var test = [ x, y ]; // [Object,Object]
对于第二种情况,请参阅MDN的Array()
文档:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
new Array(arrayLength)
如果传递给Array构造函数的唯一参数是0到
2^32 - 1
(包括)之间的整数,则返回一个新的JavaScript数组,其length属性设置为该数字
所以你的第二个案例代码可能是:
var test = Array(2);
...这实际上评估为[undefined,undefined]
),但.NET(因此ASP.NET)没有&#34; undefined
&#34;的概念。 (与null
相比),因此该值不能序列化为JSON(因为JSON不允许undefined
值) - 所以这解释了它失败的原因。
如果&#34;空&#34;数组元素在您的应用程序中有意义,您应该使用显式null
值 - 理想情况下使用数组文字,如下所示:
var ret = [ null, null ];
或者如果元素的数量是可变的:
var ret = Array( 123 ); // This creates a 123-sized array, where every element is undefined. This cannot be serialized to JSON
ret.fill( null ); // This explicitly sets every element to a null value. The array can now be serialized to JSON.