我的目标是使用AJAX,但我对此有点新意,为用户提供搜索内容并获取数据库线的可能性。我测试了几次,试图调试,但找不到解决方法。谢谢!
HTML code:
<!DOCTYPE html>
<html>
<head>
<script>
function showUser(str) {
if (str=="") {
document.getElementById("jotamacho").innerHTML="";
return;
}
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("jotamacho").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","output.php",true);
xmlhttp.send();
}
</script>
</head>
<body>
<form action="output.php" method="post" onchange="showUser(this.value)">
<select name="feature">
<option value="Nome">Primeiro Nome</option>
<option value="Apelido">Apelido</option>
<option value="País">País de origem</option>
<option value="Data">Data de nascimento</option>
</select>
Search: <input type="text" name="textquery" onchange="showUser(this.value)><br>
<br>
<div id="jotamacho">Here !</div>
</form>
</body>
</html>
我的output.php文件:
<?php
$con=mysqli_connect("127.0.0.1","root","","");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$search =mysqli_real_escape_string($con, $_POST['textquery']);
$coluna =mysqli_real_escape_string($con, $_POST['feature']);
$resposta = mysqli_query($con,"SELECT Nome,Apelido,Data_nascimento,País FROM Pessoa WHERE Pessoa.$coluna like '$search' ");
echo " <b> Results:";
echo "<table border='5'>
<tr>
<th>Nome</th>
<th>Apelido</th>
<th>Data de Nascimento</th>
<th>País</th>
</tr>";
while($row = mysqli_fetch_array($resposta)) {
echo "<tr>";
echo "<td>" . $row['Nome'] . "</td>";
echo "<td>" . $row['Apelido'] . "</td>";
echo "<td>" . $row['Data_nascimento'] . "</td>";
echo "<td>" . $row['País'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
当我测试时:
注意:未定义的索引:第15行的E:\ XAMPP \ htdocs \ Bioinformatica \ AJAX \ output.php中的textquery
注意:未定义的索引:第16行的E:\ XAMPP \ htdocs \ Bioinformatica \ AJAX \ output.php中的功能
警告:mysqli_fetch_array()要求参数1为mysqli_result,第36行的E:\ XAMPP \ htdocs \ Bioinformatica \ AJAX \ output.php中给出布尔值
答案 0 :(得分:1)
<!DOCTYPE html>
<html>
<head>
<script>
function showUser() {
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.status==200) {
document.getElementById("jotamacho").innerHTML=xmlhttp.responseText;
}
}
var fea=document.getElementById("feature").value;
var txq=document.getElementById("textquery").value;
xmlhttp.open("POST","output.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("feature=" + fea + "&textquery=" + txq);
}
</script>
</head>
<body>
<select id="feature">
<option value="Nome">Primeiro Nome</option>
<option value="Apelido">Apelido</option>
<option value="País">País de origem</option>
<option value="Data">Data de nascimento</option>
</select>
Search: <input type="text" id="textquery" onchange="showUser()"><br>
<br>
<div id="jotamacho">Here !</div>
</body>
</html>