Как показать json данные подгруженные ajax

77
31 мая 2021, 11:00

при добавление в бд поста через ajax, отправляю этот пост в json формате, все приходит, но я не могу понять как в div.container_box показать его. В контроллере выводятся все посты из бд, но если type = xhr то подгружает добавленный пост

public function all_post(Request $request, Response $response, $args)
{
    $stmt = $this->pdo->query("SELECT * FROM `post`");
    $posts = $stmt->fetchAll(\PDO::FETCH_ASSOC);
    if ($request->isXhr()) {
        $response->getBody()->write(json_encode(end($posts))); // последний ключ из БД
        return $response->withHeader('Content-type',
            'application/json; charset=utf-8');
    }
    return $this->view->render($response, 'admins/admin.posts.twig',
        [
            'posts' => $posts
        ]);
}

js

// выше идет сохранение поста в БД
$(document).on('click','#add_post_popup', function () {
    $(this).closest('form').find("input[type=file],input[type=text], 
        textarea").val("");
    $.ajax(
    {
        url: "http://slim.com/spirits/panel/post",
        method: 'GET',
        cache: false,
        dataType: 'json',
        success: function(d) {
           $('.wrapper').append(JSON.stringify(d)) // 
            // $('.wrapper').load("http://slim.com/spirits/panel/post .container_box");
        }
    });

});

twig

<div class="wrapper">
        {%for post in posts%}
            <div class="container_box">
                {{post.id}}
                {{post.name}}
                {{post.link}}
            </div>
        {%endfor%}
</div>

Как мне поместить его в div.container_box и показать как два верхних

Заранее спасибо!

Answer 1

Вместо

$('.wrapper').append(JSON.stringify(d)) 

Сделайте что-то вроде этого:

var item = $('<div class="container-box"></div>');
item.text( 'id - ' + d.id + ' name - ' + d.name + ' alias - ' + d.link );
$('.wrapper').append( item );

Для множества ключей в d будет так наверное:

var item = $('<div class="container-box"></div>');
item.text( Object.keys( d ).map( key => `${key} - ${d[key]}` ).join(' ') );
$('.wrapper').append( item );
READ ALSO
Почему не определяется объект Promise?

Почему не определяется объект Promise?

Почему вычисляемое свойство,полученное из Промиса, выдает [object Promise] на самой странице, хотя в консоли 14 (как и должно быть):

109
Не отображается всплывающая форма

Не отображается всплывающая форма

Есть всплывающая форма, когда нажимаю на кнопку то форма не открывается, ранее убирал hidden, после форма отображалась корректно, но перестала...

118
Node.js fastify разработка сайта

Node.js fastify разработка сайта

Доброго времени суток!

98
как переменную iInt перенести в файл PHP

как переменную iInt перенести в файл PHP

Напрямую, через присвоение переменную передать не получитсяC php в js - можно, например, так: let var = '<?= $str ?>', но вот в обратную сторону этот фокус...

95