подскажите как вывести поля из бд php ajax в html

подскажите как вывести поля из бд php ajax. делаю первый раз

html

 <div class="reviews">
          <div class="name"></div>
          <div class="message"></div>
    </div>

select.js


    $.ajax({
        url: 'select.php',
        type: 'GET',
        dataType: 'json',
        data: {},
        success: function (data){
            $('.name').text(data.name);
            $('.message').text(data.msg);
        }
        })

select.php

<?php

require 'connect.php';

$sel = $db->query("SELECT `name`, `msg` FROM reviews")->fetchAll(PDO::FETCH_ASSOC);
    foreach ($sel as $k => $v){
        print_r($v['name']);
        $response = [
            "name" => $v['name'],
            "msg" => $v['msg']
        ];
    }
    json_encode($response);

скрин бд - https://i.stack.imgur.com/FyikN.png


Ответы (1 шт):

Автор решения: teran

в части пхп. $sel у вас уже готовый массив. не надо его перебирать и еще что-то с ним делать.

$sel = $db->query(...)->fetchAll(...);
header("Content-type: application/json");
echo json_encode($sel);
exit;

html разметка статичная вам тут сильно не поможет. сделайте общий контейнер, куда будете добавлять данные.

 <div id="wrapper"></div>

отправку аякс запроса проще сделать через $.get или $.getJSON

  $.getJSON("/path/to/select.php", function(data){
      let html = data.map(function(v){
                      // вставить свою разметку 
                      return `<div class="review">${v.name}</div>`;
                   }).join();

      $("#wrapper").html(html);          
  });

в целом вы можете сформировать html разметку на сервере, а не передавать данные в json. C технической точки зрения это проще в реализации, и может быть менее эффективно

$sel = ....
foreach($sel as $v){
    echo "<div class='review'>{$v['name']}</div>";
} 

со стороны js

$("#wrapper").load("/sel.php");
→ Ссылка