1

我正在尝试使用 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无法序列化它。有没有办法解决?谢谢!

4

3 回答 3

0

当您像这样创建 items 对象时会发生什么:

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

我认为问题在于,当您应该只创建一个标准对象时,您正在使用内部对象创建一个数组。

于 2012-05-20T20:21:59.590 回答
0

实际上,您创建了一个数组,而数组不能用字符串索引。如果必须使用字符串作为索引,则应使用 Jason 的回答中提供的 object 或:

items = new Array();

items[0] = new Object();
items[0]['code'] = '1234';
items[0]['checked'] = true;
于 2012-05-20T20:27:54.863 回答
0

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

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

var items = [];

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

items[1] = {
    code: '4524',
    checked: false
};
于 2012-05-20T20:28:47.840 回答