javascript AlpineJS将数组从php传递到x-init

57hvy0tb  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(117)

我目前正在做一个项目,涉及到使用PHP和MySQL进行数据检索,以及使用Alpine.js进行动态前端交互。我的目标是将MySQL中数据获取返回的数组传递给Alpine.js中的x-init函数,因为我对使用这个JavaScript框架还比较陌生。我想介绍一下我目前所完成的工作:

数据.php

<?php

function dbConn() {
  //   some database connection here using PDO...

}

function getPosts() {
    return db()->query('SELECT u.username,p.* FROM users u JOIN posts p on u.id = p.user_id')->fetchAll(PDO::FETCH_ASSOC);

}

索引.php

<?php

$results = getPosts();

print("<pre>".print_r($results,true)."</pre>");

?>

<div x-data="posting()" x-init="fetchPost(<?php json_encode($results); ?>)">

    <template x-for="post in posts" :key="post.id">
        <h2 x-text="post.title"></h2>
        <p x-text="post.content"></p>
    </template>

</div>

应用程序.js

document.addEventListener("alpine:init", () => {
    Alpine.data("posting", () => ({
        fetchPost: (data) => {
            this.posts = data;
            console.log(this.posts);
        },
        posts: [],
    }));
});

下面是我的控制台上的结果,上面是我的数组结构:

先谢谢你!

vq8itlhq

vq8itlhq1#

你几乎答对了。你忘了使用echo

<div x-data="posting()" x-init="fetchPost(<?php echo htmlspecialchars(json_encode($results), ENT_QUOTES, 'UTF-8', true) ?>)">

相关问题