警告Javascript数组对象显示为空


Alerting Javascript array object shows empty

我正试图将JavaScript数组发送到我的php,但php变为空[]
它甚至在我的浏览器中显示为那样。我一直发送JSON,没有问题,但现在有了这种格式。

我有一个毫无意义的例子。。。这只是一个说明问题的代码:

var blah    = [];
var letters = ['a', 'b', 'c', 'd'];
for (var i = 0; i < letters.length; i++)
{
    blah[letters[i]] = i;
}

firebug DOM内部显示如下:

blah      []
    a      0
    b      1
    c      2
    d      3

当我做时

  1. alert(blah)------------------------------我变空了
  2. alert(JSON.stringify(blah))-----我得到[]
  3. alert(blah.a)-------------------------我得到0

那么,我如何将这个对象传递给php呢?感谢

尝试使用对象而不是数组。

所以不是:

var blah    = [];

尝试

var blah    = {};

数组是连续的数字索引。它们没有字符串作为键名
您想要的是对象{},而不是数组[]

无法在数组中分配键值集合。你需要处理对象:

var obj = {
    key1: value1,
    key2: value2
};

用于将数组转换为字符串,可以使用:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.toString(); 

带分离器:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var energy = fruits.join(" and "); 

这是工作演示

试试这个:

var blah    = {};
var letters = ['a', 'b', 'c', 'd'];
for (var i = 0; i < letters.length; i++)
{
    blah[letters[i]] = i;
}
alert(JSON.stringify(blah));

我以前已经回答过这个问题。无论如何,blah是一个数组,但您并没有将其用作数组,而是将其用作哈希映射。数组使用索引,映射使用键。JS中的任何对象也可以像地图一样工作。例如

var obj = new Object();
obj.a = 10;
obj["b"] = 20;
var obj2 = function(){...}
obj2.foo = 10;
obj2.bar = "baz";

类似地,Array也是和Object,并且可以像地图一样起作用。但是,当您像使用映射一样使用数组时,它的数组不会用于存储元素。他们只是像上面那样行事。所以数组的length是0,即使它有附加属性

您必须使用像pushpop这样的Array方法来填充并从中检索。