我正在尝试将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
当我这样做时
alert(blah)
-------------------------------我空了< / LI>
alert(JSON.stringify(blah))
-----我得到[] alert(blah.a)
----------------------------我收到0 那么如何将此对象传递给php
?感谢
答案 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。
您必须做的是使用push
和pop
之类的数组方法来填充和检索它。
答案 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 ");
试试这个:
var blah = {};
var letters = ['a', 'b', 'c', 'd'];
for (var i = 0; i < letters.length; i++)
{
blah[letters[i]] = i;
}
alert(JSON.stringify(blah));