Javascript 数组和 JQuery .param

标签 javascript jquery arrays param

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

所以我一直在使用 $.param(data),其中 data 是来自 $.ajax() 调用的数据。我注意到,当我在数据中有 params1 = new Array()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) 并去掉“[]”来解决这个问题,这样无论它是使用 {} 还是 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/

相关文章:

javascript - regex.test() 函数没有给出正确的结果

javascript - AngularJS $watch 函数重复调用 - 如何防止它

javascript - 出厂时的 Angular 访问模块范围

javascript - 如果不在数组中 -> array.push

java - 获取JTextField文本并实时显示在JTextarea上

php - 按值搜索数组并返回键

javascript - 从数组中删除虚假值

javascript - Phaser.js 中的文本方向

jquery - 使用 json_write() 时有两个 unicode 代码点?

javascript - 使用 Jquery 的没有插件的顶部幻灯片菜单