【发布时间】:2015-04-29 02:13:55
【问题描述】:
我需要建立一个实时搜索,但我不太了解 ajax 和 javascript,但我了解 html、css 和 php。有人能告诉我我做错了什么吗?
<script>
function liveSearch(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", "getuser.php?q=" + str, true);
xmlhttp.send();
}
}
</script>
<input type="text" onkeypress="liveSearch(this.name)" name="searchWord"/>
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'ezcart';
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if ($conn->connect_error) {
die('Could not connect to the database: ' . $conn->connect_error);
}
$word = $_GET['q'];
$sql= "SELECT prodNam FROM product WHERE prodNam LIKE '$q' ORDER BY prodNam ASC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<div><p>".$row[prodNam]."</p></div>";
}
}
$conn->close();
?>
【问题讨论】:
-
就我个人而言,我会使用 Jquery 和
$.get或$.post函数,因为它们正是为这类事情而设计的,而且更容易(在我看来)更清晰。 -
我不能使用 jquery,这是一个单元的课程。
-
你有
onkeypress="liveSearch(this.name)",它将发送searchWord。我想你希望onkeypress="liveSearch(this.value)"发送文本框的值。 -
我们是否假设您的 php 代码在
getuser.php中? (1) 你的变量是$word->$word = $_GET['q'];,但你的查询中有$q->LIKE '$q'。 (2) 此外,您可能希望在查询值中添加通配符%->... LIKE '%$word%' ...。 (3) 你应该清理你的用户数据 ->$word = $mysqli->real_escape_string($_GET['q']); -
你的问题是什么?
标签: javascript php ajax search