1

我注意到了一些奇怪的事情。我一直认为new Array()与 相同{},但它似乎不同,因为它似乎{}只是一个对象类型,而new Array()在 Chrome 调试器中是一个数组。

所以我一直在使用$.param(data),其中 data 是来自$.ajax()通话的数据。我注意到,当我在数据中有 aparams1 = new Array()和 a时params2 = {},它们的输出方式不同。

params1 变成

params1[]=1&params1[]=2 

和 params2 变成

params2[0]=1&params2[1]=2.

问题是我一直在使用.param(data, false),因为我注意到它params1[]被错误地序列化,但是.param(data, false)失败params2并给了我params2=[object+Object].

我想我可以通过使用 .param(data) 并去掉“[]”来解决这个问题,这样无论使用{}or初始化new Array它,它仍然可以正常工作。但我想知道是否有更好的解决方案(不总是使用{}vs new Array)。

4

1 回答 1

1

基里奥德,

在 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 问题。

于 2012-08-08T20:08:33.150 回答