2

我正在尝试将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呢?谢谢

4

4 回答 4

6

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

所以而不是:

var blah    = [];

尝试

var blah    = {};
于 2013-07-08T06:02:36.710 回答
4

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

于 2013-07-08T06:02:46.903 回答
2

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

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));
于 2013-07-08T06:10:16.460 回答
1

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

var obj = new Object();
obj.a = 10;
obj["b"] = 20;

var obj2 = function(){...}
obj2.foo = 10;
obj2.bar = "baz";

同样,Arrayis 也和Object并且可以像地图一样起作用。但是当你像地图一样使用数组时,它的数组并没有被用来存储元素。他们只是像上面那样行事。所以lengthArray 的值为 0,即使它附加了属性。

您必须做的是使用 Array 方法,如pushandpop来填充和检索它。

于 2013-07-08T06:06:55.600 回答