gpt4 book ai didi

javascript - 如何加载更多引用帖子 ID 的 ajax 数据,用 php 获取

转载 作者:行者123 更新时间:2023-11-29 18:48:34 25 4
gpt4 key购买 nike

  1. 我有一个 "img_title" 列表。从数据库中通过 php 获取“img_title” - 动态列表。

    +------------------------+
    | img_title: |
    +========================+
    | golden Retriever |
    +------------------------+
    | Appenzeller Sennenhund |
    +------------------------+
    | German Shepard |
    +------------------------+
    | Alaskan Klee Kai |
    +------------------------+
    | . . . . . |
    +------------------------+
  2. 如果用户点击 "img_title"...

    +-----------------------------+
    |<b>Appenzeller Sennenhund</b>|
    +-----------------------------+
  3. ...然后应该显示一个新的 div 框,其中分别包含 "img_descr"通过 AJAX 获取:

    +-----------------------------+     +-----------------------------+
    | Appenzeller Sennenhund | |<b>Swiss: ABC123... </b>|
    +-----------------------------+ +-----------------------------+

    ...或者

    +-----------------------------+     +-----------------------------+
    | golden Retriever | |<b>UK: ZYX987... </b>|
    +-----------------------------+ +-----------------------------+

我需要在 php 获取的数据和 ajax 获取的数据之间建立连接。

我只知道如何一次获取所有描述,但不知道如何仅使用“img_descr - ID:3”(ajax) 获取“img_title - ID:3”(php)。

我想过也获取“img_id”并引用它,ajax 可以从数据库中获取更多数据。

这是我的代码(在 php 和 ajax 获取的数据之间没有 img_id 连接)

HTML 和 PHP:

<body>

<?php
$db = mysqli_connect("localhost", "root", "", "xy");
$result = mysqli_query($db, "SELECT * FROM images");
while ($row = mysqli_fetch_array($result))
{
echo "<button class='img_title'>Title: <b>" . $row['img_title'] . "</b></button><br>";
}
?>

<div id="descrs"></div>

</body>

JavaScrpit 和 AJAX

 <script>
// Get the buttons (NodeList)
var buttons = document.querySelectorAll("button.img_title");

for(var x=0; x < buttons.length; x++) {
buttons[x].addEventListener('click', loadDescr);
}

function loadDescr(e)
{
var xhr = new XMLHttpRequest();
xhr.open('GET', 'ajax.php', true);

xhr.onload = function()
{
if (this.status == 200)
{
var descrs = JSON.parse(this.responseText);

var output = '';

for (var i in descrs) {
output += '<ul>' +
'<li class="ajax_img_descr">ID: ' + descrs[i].img_descr + '</li>' + '</ul>';
}

document.getElementById('descrs').innerHTML = output;
}
}
xhr.send();
}
</script>

ajax.php

<?php
// Create Connection
$conn = mysqli_connect('localhost', 'root', '', 'xy');
$query = 'SELECT * FROM images';
// Get Result
$result = mysqli_query($conn, $query);
// Fetch Data
$users = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo json_encode($users);
?>

最佳答案

因为您需要将 ID 传递给服务器,所以您应该将其存储在 button 中,最简单的方法是使用 data-attribute:

 while ($row = mysqli_fetch_array($result))
{
echo "<button class='img_title' data-id='" . $row['id'] . "'>Title: <b>" . $row['img_title'] . "</b></button><br>";
}

接下来,您必须在事件处理程序中获取此数据 ID。可以通过 getAttribute 函数完成:

function loadDescr(e)
{
var id = e.target.getAttribute('data-id');
// console.log(id); // for testing purposes

var xhr = new XMLHttpRequest();
xhr.open('GET', 'ajax.php?id=' + id, true);

// more codes

}

在服务器端,您的 ID 可通过 $_GET['id'] 获得:

<?php
// Create Connection
$conn = mysqli_connect('localhost', 'root', '', 'xy');
$query = 'SELECT * FROM images WHERE id = ' . $_GET['id']; // I simplified this code, but you MUST use prepared statements here to avoid sql-injection
// Get Result
$result = mysqli_query($conn, $query);
// Fetch Data
$users = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo json_encode($users);
?>

关于javascript - 如何加载更多引用帖子 ID 的 ajax 数据,用 php 获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52302345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com