Вам необходимо сериализовать массив DataList
:
request.send(JSON.stringify(DataList));
И вы не должны отправлять запрос внутри цикла for
.Создайте весь цикл DataList
в цикле, а затем отправьте запрос AJAX в конце.
И если вы хотите отправить массив объектов с именованными свойствами, вы не должны использовать массив в качестве элементов.Измените
var item = [];
на
var item = {};
function SaveData() {
var DataList = [];
var table = document.getElementById("bod");
var rowLength = table.rows.length;
//loops through rows
for (i = 0; i < rowLength; i++) {
//gets cells of current row
var oCells = table.rows.item(i).cells;
//gets amount of cells of current row
//var cellLength = oCells.length-2;
//loops through each cell in current row
var item = {};
item["destination"] = oCells.item(0).innerHTML;
item["criteria"] = oCells.item(1).innerHTML;
item["material"] = oCells.item(2).innerHTML;
DataList.push(item)
}
var request = new XMLHttpRequest()
request.open("POST", "DOM_SAVE.php", true)
request.setRequestHeader("Content-type", "application/json")
request.send(JSON.stringify(DataList));
console.log(DataList);
}
В PHP вы захотите декодировать его:
$DataList = json_decode(file_get_contents("php://input"), true);
var_dump($DataList);