我第一次接触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); ?>