我注意到一些奇怪的事情。我一直认为 new Array()
与 {}
相同,但它似乎有所不同,因为 {}
似乎只是对象类型,而 new Array()
是 Chrome 调试器中的数组。
所以我一直在使用 $.param(data)
,其中 data 是来自 $.ajax()
调用的数据。我注意到,当我在数据中有 params1 = new Array()
和 params2 = {}
时,它们的结果会有所不同。
params1 变为
params1[]=1¶ms1[]=2
并且 params2 变为
params2[0]=1¶ms2[1]=2.
问题是我一直在使用 .param(data, false)
因为我注意到 params1[]
被错误地序列化,但是 .param (data, false)
对于 params2
失败,并给出 params2=[object+Object]
。
我想我可以通过使用 .param(data) 并去掉“[]”来解决这个问题,这样无论它是使用 {}
还是 new Array
初始化的code>,它仍然会正确工作。但我想知道是否有更好的解决方案(除了总是使用 {}
与 new Array
相比)。
最佳答案
基利奥德,
在 JavaScript 中,{} 是创建新对象的简写,[] 是“new Array()”的简写。
所以:
var myArray1 = [];
var myArray2 = new Array();
var myObject = {};
myObject.objVariable1 = 'some string or other variable data';
var myObject2 = { obj2Var1 : 'some string', obj2Var2 : 1234, obj2Var3 : true };
// do stuff
var thing1 = myArray1[1]; // get something out of myArray1
var thing2 = myArray2[2]; // get something out of myArray2
var thing3 = myObject.objVariable1; // get something out of myObject
if(myObject2.obj2Var3)
{
// do other stuff
}
希望这可以帮助您解决 jQuery/javascript Ajax 问题。
关于Javascript 数组和 JQuery .param,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872215/