首页 > 解决方案 > 制作了一个 AJAX 脚本,该脚本应该使用 GET 来使用我的 PHP 文件获取数据,但无法正常工作

问题描述

该代码应该获取查询结果并根据文本框中写入的数字显示它,我尝试了(onkeydown 和 onkeyup)但都没有工作,我不知道为什么它不工作,我的错误是什么.

HTML 代码:

<script>
        function showRoom(rid) {
            xmlhttp = new XMLHttpRequest();

            xmlhttp.open("GET", "getRoomAJAX.php?q="+rid, true);
            xmlhttp.send();

            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
                }
            }
        }
    </script>

    <form> 
        <input type="text" name="rid" onkeydown="showRoom(this.value)">
    </form>

    <div id="txtHint">Room...</div>

getRoomAJAX.php 代码:

<?php
session_start();
ob_start();

$q = $_GET["q"];

$db = new Database();
$dbc = $db->getConnection();

if (!$dbc) {
    die('Could not connect: ' . mysql_error());
}

$query = "SELECT * FROM indvProj_room WHERE rid = '".$q."'";

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

//start creating the table HTML
if ($result) {
    echo "<table border='1' align='center' cellspacing = '2' cellpadding = '4' width='100%'>
          <tr>
          <th><b>Room ID</b></th>
          <th><b>Room Description</b></th>
          </tr>";
    while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
        echo "<tr>";;
        echo "<td>" . $_SESSION['adminRoomChoice'] = $row['rid'] . "</td>";
        echo "<td>" . $row['roomDesc'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo '<p class="error">Sorry, cannot find the room, are you sure of the entered Room ID?</p>';
    echo '<p class = "error">' . mysqli_error($dbc) . '</p>';
}


?>

标签: phphtmlajax

解决方案


是否showRoom()会被调用?放入一个console.log(rid);内部showRoom()以查看它是否被调用以及该值是否被正确传递。

如果您可以确定它进入了showRoom().,然后按照代码向下并进入 PHP 以查看它失败的地方。在 PHP 文件的顶部及其return;正下方回显一些示例文本。这将告诉您错误是在 XMLHttpRequest 代码中还是在 PHP 文件中的某个位置。

通常,我不会通过 onkeydown 类型的事件传递任何变量/参数。通常,我在没有参数的情况下调用这样的方法,然后根据元素的 id 检索值。有关详细信息,请参阅此答案:https ://stackoverflow.com/a/54040431/3103434


推荐阅读