подскажите как вывести поля из бд 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");