我正在尝试使用JS创建一个多维数组,以便通过Ajax调用将一些数据发送到PHP。这可能非常简单,但是我对于这个特定的事情在JS方面的知识很少...
这里有一个带有代码的JSFiddle
我想要的是像这样的一种数组:
我正在尝试使用以下代码生成对象数组:
当我将变量
如果我在PHP中打印出
var data = {
bewaarnaam: 'bewaarnaam!',
rows: [{
row_1: [{
name: 'Row Name 1',
x: 450,
y: 250,
chest1: [{
counter: 1,
height: 5
}],
chest2: [{
counter: 2,
height: 3
}]
}],
row_2: [{
name: 'Row Name 2',
x: 650,
y: 550,
chest1: [{
counter: 1,
height: 8
}],
chest2: [{
counter: 2,
height: 4
}]
}],
}]
};
我正在尝试使用以下代码生成对象数组:
function saveThis() {
var bewaarNaam = $("#bewaarplaatsName").val();
hide_overlay_save_name();
log("now where going to save everything with the name: " + bewaarNaam);
var dataRows = [{
'bewaarnaam': bewaarNaam
}];
$(".rows").each(function (i, obj) {
var row = $(obj);
var rowName = $(row).attr('name');
var chests = [];
$(".cv_chest", row).each(function (i2, obj2) {
chests[$(obj2).attr('id')] = [{
'counter': $(obj2).attr('chest_counter'),
'height': $(obj2).attr('chest_height')
}];
});
var rowData = [{
rowName: [{
'name': $(row).attr('name'),
'x': $(row).css('left'),
'y': $(row).css('top'),
'chests': chests
}]
}];
dataRows[$(row).attr('id')] = rowData;
});
log(dataRows);
log("sending data with ajax...");
$.ajax({
type: 'post',
cache: false,
url: '{{ url('
bewaarplaatsen / nieuw ') }}',
data: dataRows
}).done(function (msg) {
log("ajax success");
log(msg);
}).fail(function (msg) {
log("ajax error");
log(msg);
});
}
当我将变量
dataRows
输出到控制台时,我得到以下输出:[Object, row_1: Array[1], row_2: Array[1]]
0: Object
bewaarnaam: "Bewaar Naam!"
__proto__: Object
length: 1
row_1: Array[1]
0: Object
rowName: Array[1]
0: Object
chests: Array[0]
chest_1_1: Array[1]
0: Object
counter: "1"
height: "1"
__proto__: Object
length: 1
等等……如果我使用console.log(JSON.stringify(dataRows));
记录变量,我将获得以下输出:
[{
"bewaarnaam": "Bewaar Naam!"
}]
如果我在控制台中执行第一个代码块(var data = ...
部分),并将数据记录到控制台,就会得到以下输出结果(为了更好的可读性,我再次使用了`JSON.stringify函数进行记录):
{
"bewaarnaam": "Bewaar Naam!",
"rows": [{
"row_1": [{
"name": "Row Name 1",
"x": 450,
"y": 250,
"chest1": [{
"counter": 1,
"height": 5
}],
"chest2": [{
"counter": 2,
"height": 3
}]
}],
"row_2": [{
"name": "Row Name 2",
"x": 650,
"y": 550,
"chest1": [{
"counter": 1,
"height": 8
}],
"chest2": [{
"counter": 2,
"height": 4
}]
}]
}]
}
如果我在PHP中打印出
POST
值,我会得到以下输出:Array
(
[undefined] =>
)
当我使用Chrome调试Ajax请求时,我发现表单数据
中有2个未定义的
值:
Form data
undefined:
undefined:
如果我理解正确的话,是对象没有被正确创建,因此它没有被正确地通过Ajax发送。因此,PHP无法处理这个POST数据...
所以我的问题非常简单... 我做错了什么/如何解决这个问题?