带有ajax过滤器的sql响应不起作用


sql response with ajax filter not working

我第一次接触ajax。我已经修改了这个教程。但是,sql响应始终不显示任何记录。我做了$result的var_dump,但只得到了bool(false)。我哪里搞错了?有没有更好的方法来制作动态过滤器?

我的功能,简单的表格:

function showRoadMap() {
$conn.... //cut connection with database
$q = $_GET['q'];
$sql = "SELECT * FROM roadmap WHERE status={$q}";
$result = $conn->query($sql);
    if ($result->num_rows > 0) {
        echo '
        <table class="showGrid">
                <tr>
                    <td>Name</td>
                    <td>Status</td>
                </tr>';
        while($row = $result->fetch_assoc()) {
            echo '<tr><td>'.$row['name'].'</a></td>
                  <td>'.$row['status'].'</td></tr>';
        }
        echo '</table>';
    }
    else
        echo 'No record found';
    }
}

我的php文件:

<script>
function showFilter(str) {
if (str == "") {
    document.getElementById("txtHint").innerHTML = "";
    return;
} else { 
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","roadmapShow.php?q="+str,true);
    xmlhttp.send();
}
}
</script>
<form>
<select name="status" onchange="showFilter(this.value)">
<option value="">Select a status:</option>
<option value="proposal">proposal</option>
<option value="approved">approved</option>
<option value="done">done</option>
<option value="refuse">refuse</option>
</select>
</form>
<div id="txtHint"></div>

最后一个文件:roadMapShow.php

<?php showRoadMap(); ?>

去掉第三个文件或设置正确的include和参数传递。我在两个文件中修复了你的代码。"我的php文件"中没有任何更改,其他两个组合如下:

roadmapShow.php:

<?php 
    $q = $_GET['q'];
    function showRoadMap($q) {
        $conn.... //cut connection with database
        $sql = "SELECT * FROM roadmap WHERE status={$q}";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
            echo '
            <table class="showGrid">
                    <tr>
                        <td>Name</td>
                        <td>Status</td>
                    </tr>';
            while($row = $result->fetch_assoc()) {
                echo '<tr><td>'.$row['name'].'</a></td>
                      <td>'.$row['status'].'</td></tr>';
            }
            echo '</table>';
        }
        else
            echo 'No record found';
    }
    showRoadMap($q); 
?>

试着这样做

function showRoadMap($query) {
$conn.... //cut connection with database
$q = $query;
$sql = "SELECT * FROM roadmap WHERE status={$q}";
$result = $conn->query($sql);
    if ($result->num_rows > 0) {
        echo '
        <table class="showGrid">
                <tr>
                    <td>Name</td>
                    <td>Status</td>
                </tr>';
        while($row = $result->fetch_assoc()) {
            echo '<tr><td>'.$row['name'].'</a></td>
                  <td>'.$row['status'].'</td></tr>';
        }
        echo '</table>';
    }
    else
        echo 'No record found';
    }

和在路标显示.php 中

<?php 
$q = $_GET['q'];
showRoadMap($q); ?>