获取参数拉相同的id

我在左边有搜索结果。单击结果时,它需要在右侧的 div 中加载 - 无需刷新或加载新页面。搜索给出三个搜索结果并有分页。无论我单击哪个搜索结果,都会加载相同的 ID。谁能看到我哪里出错了?


索引.php


    //get rows

    $query = $db->query("SELECT * FROM posts ORDER BY id DESC LIMIT $limit");


    if($query->num_rows > 0){ ?>

        <div class="posts_list">

        <?php

            while($row = $query->fetch_assoc()){ 

                $postID = $row['id'];

        ?>

            <div class="list_item"><h2><?php echo $row["title"] ?></h2><button type="button" onclick="loadDoc()" >View</button></div>

            <div class="item_viewer"><p id="demo"></p></div>

                <script type="text/javascript">

                function loadDoc() {

                  var xhttp = new XMLHttpRequest();

                  xhttp.onreadystatechange = function() {

                    if (this.readyState == 4 && this.status == 200) {

                      document.getElementById("demo").innerHTML = this.responseText;

                    }

                  };

                  xhttp.open("GET", "file/file.php?id=<?php echo $row['id'] ?>", true);

                  xhttp.send();

                }

                </script>

        <?php } ?>

        </div>

        <?php echo $pagination->createLinks(); ?>

    <?php } ?>

文件.php


<body>

  <div class="container">

    <div class="box">

<?PHP

//create connection

$connect = new mysqli($host, $dbUsername, $dbPassword, $dbname);

if (mysqli_connect_error()) {

die('Connect Error('. mysqli_connect_errno().')'. mysqli_connect_error());

} else {

$id = $_GET['id'];

$id = mysqli_real_escape_string($connect,$id);

$query = "SELECT * FROM `posts` WHERE `id`='" . $id . "'";

$result = mysqli_query($connect,$query);

while($row = mysqli_fetch_array($result)) {

echo "Company: <b>" .$row['title']. "</b>";

echo "<br/>";

echo "ID: <b>" .$row['id']. "</b>";

?>

<a href="<?PHP echo $row[''];}}?>"><button class="btn success">View</button></a>    

    <a href="" ><button class="btn default">Back</button></a>  

        </div>

    </div>

</body>


慕标5832272
浏览 135回答 1
1回答

慕慕森

您的代码loadDoc在循环内生成多个函数,因此每个按钮都使用相同的函数(相同的 rowId 静态放置在其中)。如果您只有一个函数并将 id 作为参数传递,那就更好了,如下所示:<?&nbsp;$query = $db->query("SELECT * FROM posts ORDER BY id DESC LIMIT $limit");if($query->num_rows > 0){ ?>&nbsp; &nbsp; <div class="posts_list">&nbsp; &nbsp; <?php&nbsp; &nbsp; &nbsp; &nbsp; while($row = $query->fetch_assoc()){&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $postID = $row['id'];&nbsp; &nbsp; ?>&nbsp; &nbsp; &nbsp; &nbsp; <div class="list_item">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <h2><?php echo $row["title"] ?></h2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <!-- Pass Id into the function -->&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <button type="button" onclick="loadDoc(<?php echo $row['id'] ?>)" >View</button>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; &nbsp; <div class="item_viewer"><p id="demo"></p></div>&nbsp; &nbsp; <?php } ?>&nbsp; &nbsp; </div>&nbsp; &nbsp; <script type="text/javascript"> // Move JavaScript function out of loop, so that it only exists once in the document&nbsp; &nbsp; &nbsp; &nbsp; function loadDoc(rowId) { // Pass rowId as argument&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var xhttp = new XMLHttpRequest();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xhttp.onreadystatechange = function() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (this.readyState == 4 && this.status == 200) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.getElementById("demo").innerHTML = this.responseText;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xhttp.open("GET", "file/file.php?id=" + rowId, true);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xhttp.send();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; </script>&nbsp; &nbsp; <?php echo $pagination->createLinks(); ?><?php } ?>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript