我正在尝试使用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无法序列化它。有没有办法解决?谢谢!
答案 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
,但之后您要为该阵列分配新的code
和checked
属性。这不是正确序列化的,因为不是在数组中的每个位置都有一个对象,而是另一个数组包含您添加的一些随机属性(code
和checked
)。
尝试将对象文字分配给数组中的每个位置:
var items = [];
items[0] = {
code: '1234',
checked: true
};
items[1] = {
code: '4524',
checked: false
};