Como bien dices, estás almacenando a las filas y los datos contenidos en ellas. Sin embargo, lo conveniente sería que leas el contenido de las celdas que integran a cada fila. Por otro lado, por una cuestión de orden y facilidad en la manipulación de los datos obtenidos, sería muy útil que almacenes dichos datos en
objetos literales, mismos que almacenarías en el arreglo que finalmente enviarías al archivo PHP que los vaya a procesar. Si deseas que todo el proceso se realice sin recargar la página, necesitarás utilizar una petición asíncrona. Para enviar el arreglo, puedes
parsearlo a JSON usando el método
JSON.stringify()
y decodificarlo en PHP con la función
json_decode()
.
Código Javascript
:
Ver originalvar data = [], objeto, celdas;
[].forEach.call(tabla.querySelectorAll("tr"), function(tr){
celdas = tr.querySelectorAll("td");
objeto = {
valor1: celdas[0].innerHTML,
valor2: celdas[1].innerHTML,
valor3: celdas[2].innerHTML
};
data.push(obj);
});
//...
var ajax = new XMLHttpRequest();
ajax.open("POST", "ejemplo.php");
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send("data=" + JSON.stringify(data));
Código PHP:
Ver original
foreach ($data as $object){
echo $object->valor1; //El valor de la primera celda de la fila actual en el bucle
echo $object->valor2; //El valor de la segunda celda de la fila actual en el bucle
echo $object->valor3; //El valor de la tercera celda de la fila actual en el bucle
}
Y si quisieras reutilizar el código para tablas con filas de mayor, menor o igual cantidad de celdas:
Código Javascript
:
Ver original[].forEach.call(tabla.querySelectorAll("tr"), function(tr){
objeto = {}, i = 0;
[].forEach.call(tr.querySelectorAll("td"), function(td){
objeto["valor" + (++i)] = td.innerHTML;
});
data.push(obj);
});
Código PHP:
Ver original
foreach ($data as $object){
foreach ($object as $value){
echo $value;
}
}