我有这个数组
var car = new Array();
car['brand'] = "Ford";
car['color'] = "red";
car['type'] = 1;
现在,我试着发送这个但是php只告诉我汽车是一个未定义的索引:
$.post('regCar.php', { "car[]": car }, function(data) {
// some other lol here ...
});
在"car[]": ["Ford", "red", 1]
中发送工作正常:(如何将关联数组传递给php?
答案 0 :(得分:3)
正如我的评论所述,你should not use arrays this way。仅对数字索引使用数组:
不允许使用关联
Arrays
...或者更准确地说,不允许对数组使用非数字索引。如果在这些情况下需要地图/哈希使用Object
而不是Array
,因为您需要的功能实际上是Object
而不是Array
的功能。Array
只是扩展Object
(就像JS中的任何其他对象一样,因此您可能也使用Date
,RegExp
或String
。
这正是代码不起作用的原因。
Have a look at this fiddle:警报为空意味着jQuery没有序列化(因此发送)任何数据。
有人可能会认为它至少会发送一个空值,例如car[]=
,但显然不会。
如果您使用对象:
var car = {};
答案 1 :(得分:1)
答案 2 :(得分:1)
<击> 撞击>
<击>$.post('regCar.php', {'car': car}, function(data) { // - I changed the key value name });
您无需在数据参数中添加括号
击>
但是,我建议你使用JS对象。
var car = {};
car.brand = "Ford";
car.color = "red";
car.type = 1;
如果您在PHP端遇到未定义的错误,则需要发布您的PHP代码。
编辑
正如@Felix Kling所指出的,丢弃数组以支持对象将对你有用。