通过ajax将数组传递给php?

时间:2011-05-11 09:55:09

标签: jquery

我有这个数组

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?

3 个答案:

答案 0 :(得分:3)

正如我的评论所述,你should not use arrays this way。仅对数字索引使用数组:

  

不允许使用关联Arrays ...或者更准确地说,不允许对数组使用非数字索引。如果在这些情况下需要地图/哈希使用Object而不是Array,因为您需要的功能实际上是Object而不是Array的功能。 Array只是扩展Object(就像JS中的任何其他对象一样,因此您可能也使用DateRegExpString

这正是代码不起作用的原因。

Have a look at this fiddle:警报为空意味着jQuery没有序列化(因此发送)任何数据。

有人可能会认为它至少会发送一个空值,例如car[]=,但显然不会。

如果您使用对象:

var car = {};

it works

答案 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所指出的,丢弃数组以支持对象将对你有用。