Al enviar datos, se muestran en una línea. ¿Cómo asegurarse de que cada registro sea un objeto y todos los objetos se conviertan en una matriz?
<?php require_once("db.php"); $query = $db->query('SELECT * FROM `dictdb`.`dictwords`'); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { echo " id: " . $row['id'] . ", engWord: " . $row['engwords'] . ", rusWord: " . $row['ruswords'] ." "; } ?>prueba.js
$(document).ready(function () { $(".btn-test").on("click", function () { $.ajax({ url: "/src/php/tests.php", type: "POST", success: function (data) { $(".test-word").html(data); } }) })Porque está insertando texto sin formato en HTML. Eso está destinado a ser con <tags> ignorando su espacio en blanco (como saltos de línea).
Cargue algo de HTML razonable desde PHP
## in PHP ... echo "<p> id: " . $row['id'] . ",<br> engWord: " . $row['engwords'] . ",<br> rusWord: " . $row['ruswords'] ."<br> </p>"; ...O, mejor, trabaja con JSON
## in PHP ... $results = []; while ($row = $query->fetch(PDO::FETCH_ASSOC)) $results[] = $row; header('Content-Type: application/json'); echo json_encode($results); ... ## in JS $.ajax('/src/php/tests.php') .done(data => { // use .success for older jQuery versions let formatedJSON = JSON.stringify(data, null, 2); $(".test-word").html(`<pre>${formatedJSON}</pre>`); });Coloque las etiquetas HTML deseadas en los datos que repite.
echo "<br> id: " . $row['id'] . ",<br> engWord: " . $row['engwords'] . ",<br> rusWord: " . $row['ruswords'] ."<br> ";Su echo no produce un objeto JSON. Tendrías que hacer algo como:
<?php require_once("db.php"); $query = $db->query('SELECT * FROM `dictdb`.`dictwords`'); $response = []; while ($row = $query->fetch(PDO::FETCH_ASSOC)) { $response[] = [ 'id' => $row['id'], 'engWord' => $row['engwords'], 'rusWord' => $row['ruswords'], ]; } echo json_encode($response);Esto produciría un objeto JSON similar a (si tuviera 2 resultados de DB):
[ { id: 'YourID', engWord: 'Your Eng Word', rusWord: 'Your Rus Word', }, { id: 'YourID', engWord: 'Your Eng Word', rusWord: 'Your Rus Word', }, ]En lugar de intentar analizar HTML, recomiendo usar una respuesta JSON.