我有一个实时搜索,它从数据库中提取所有相关信息,并使用Ajax将其显示在与搜索相关的表中,因此它不会刷新页面,因此在每次搜索后它都重置为零,直到它恢复收到另一个输入,但是我希望它显示其正常运行(所有信息).
接收输入之前:http://prntscr.com/hnmui8
收到输入后:http://prntscr.com/hnmv0r
删除输入后:http://prntscr.com/hnmv53
删除输入后希望它看起来像什么:http://prntscr.com/hnmvhr
index.PHP
<!DOCTYPE html>
<html>
<head>
<title>Webslesson Tutorial | Autocomplete TextBox using Bootstrap Typehead with Ajax PHP</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
</head>
<body>
<br /><br />
<div class="container" style="width:600px;">
<h2 align="center">Ajax live data search using Jquery PHP MysqL</h2>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Search</span>
<input type="text" name="search_text" id="search_text" placeholder="Search by Customer Details" class="form-control" />
</div>
</div>
<br />
<div id="result">
<div class='table-responsive'>
<table class='table table-bordered'>
<tr>
<th>Customer name</th>
<th>Address</th>
<th>City</th>
<th>Potal code</th>
<th>Country</th>
</tr>
<?PHP
include('db.PHP');
$customers = DB::query('SELECT * FROM live');
foreach($customers as $p){
echo '<tr>
<td>'.$p["name"].'</td>
<td>'.$p["address"].'</td>
<td>'.$p["city"].'</td>
<td>'.$p["postCode"].'</td>
<td>'.$p["country"].'</td>
</tr>';
}
?>
</div>
</div>
</body>
</html>
<script>
$('#search_text').keyup(function(){
var txt = $(this).val();
if(txt != ''){
$.ajax({
url: "fetch.PHP",
method: "POST",
data:{search:txt},
dataType: "text",
success:function(data){
$('#result').html(data);
}
});
}else{
$('#result').html('');
});
</script>
fetch.PHP
<?PHP
$connect = MysqLi_connect("localhost", "root", "", "ajax");
$output = '';
$sql = "SELECT * FROM live WHERE name LIKE '%".$_POST['search']."%'";
$result = MysqLi_query($connect, $sql);
if(MysqLi_num_rows($result) > 0){
$output .= "<h4 align='center'>Search result</h4>";
$output .= "<div class='table-responsive'>
<table class='table table-bordered'>
<tr>
<th>Customer name</th>
<th>Address</th>
<th>City</th>
<th>Potal code</th>
<th>Country</th>
</tr>";
while($row = MysqLi_fetch_array($result)){
$output .= '
<tr>
<td>'.$row["name"].'</td>
<td>'.$row["address"].'</td>
<td>'.$row["city"].'</td>
<td>'.$row["postCode"].'</td>
<td>'.$row["country"].'</td>
</tr>
';
}
echo $output;
}else{
echo "There are no customers.";
}
?>
谢谢,
伊森
解决方法:
您可以将原始数据集保存到变量中,如果输入是“”,则可以将变量中的内容还原为以下内容,而不是将html内容设置为“”:
var originalData = $('#result').html();
$('#search_text').keyup(function(){
var txt = $(this).val();
if(txt != ''){
$.ajax({
url: "fetch.PHP",
method: "POST",
data:{search:txt},
dataType: "text",
success:function(data){
$('#result').html(data);
}
});
} else {
$('#result').html(originalData);
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。