jQuery $ .ajax不会传递数组

时间:2012-05-20 20:16:27

标签: ajax arrays jquery

我正在尝试使用jQuery传递这样的数组,但是PHP脚本从未接收到它,并且浏览Chrome的网络跟踪显示只传递了title

var items = new Array();

items[0] = new Array();
items[0]['code'] = '1234';
items[0]['checked'] = true;

items[1] = new Array();
items[1]['code'] = '4524';
items[1]['checked'] = false;

这是执行AJAX请求的代码:

var sUrl = "<?= base_url(); ?>list/create/";
var serialized = {
    title: 'Some Value Here',
    items: items
};
$.ajax({
    url: sUrl,
    type: "POST",
    data: serialized,
    success: function(data) {
        alert(data);
        list_id = data;
    }
});                 

问题似乎是jQuery无法序列化它。有没有办法解决?谢谢!

3 个答案:

答案 0 :(得分:0)

创建项目对象时会发生什么:

var items = [
    {
        code: '1234'
        , checked: true
    }
    ,{
        code: '4568'
        , checked: false
    }
];

我认为问题是当你应该创建一个标准对象时,你正在用你的内部对象创建一个数组。

答案 1 :(得分:0)

实际上你创建的数组和数组不能用字符串索引。如果必须使用字符串作为索引,则应使用对象,如Jason的答案或:

中所提供的
items = new Array();

items[0] = new Object();
items[0]['code'] = '1234';
items[0]['checked'] = true;

答案 2 :(得分:0)

您要为new Array中的每个索引分配items,但之后您要为该阵列分配新的codechecked属性。这不是正确序列化的,因为不是在数组中的每个位置都有一个对象,而是另一个数组包含您添加的一些随机属性(codechecked)。

尝试将对象文字分配给数组中的每个位置:

var items = [];

items[0] = {
    code: '1234',
    checked: true
};

items[1] = {
    code: '4524',
    checked: false
};