我正在尝试用JS创建一个多维数组,以便我可以通过对PHP的Ajax调用发布一些数据.它可能非常简单,但我对JS的知识对于这个具体的事情很少......
这是一个带代码的JSFiddle
我想要的是某种像这样的数组:
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中print_r
的POST
值,我得到以下输出:
Array ( [undefined] => )
当我用Chrome调试Ajax请求时,我可以看到Form Data
得到2 undefineds
:
Form data undefined: undefined:
因此,如果我理解正确,该对象是否未正确创建,因此,它无法与Ajax一起正确发送.正因为如此,PHP无法对帖子数据做任何事情......
所以我的问题很简单......我做错了什么/如何解决这个问题?