警报Javascript数组对象显示为空

时间:2013-07-08 06:00:31

标签: php javascript arrays

我正在尝试将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) -------------------------------我空了< / LI>
  2. alert(JSON.stringify(blah)) -----我得到[]
  3. alert(blah.a) ----------------------------我收到0
  4. 那么如何将此对象传递给php?感谢

4 个答案:

答案 0 :(得分:6)

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

所以而不是:

var blah    = [];

尝试

var blah    = {};

答案 1 :(得分:4)

阵列连续数字索引。他们没有字符串作为关键名称 你想要的是一个对象{},而不是一个数组[]

答案 2 :(得分:1)

我之前已经回答了这个问题。无论如何,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之类的数组方法来填充和检索它。

答案 3 :(得分:1)

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

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 "); 

Here is working Demo

试试这个:

var blah    = {};
var letters = ['a', 'b', 'c', 'd'];

for (var i = 0; i < letters.length; i++)
{
    blah[letters[i]] = i;
}

alert(JSON.stringify(blah));