如何从 AJAX 搜索中检索结果?
How to retrieve the results from an AJAX search?
我正在尝试了解如何发送 AJAX 搜索的结果,但它不起作用。我想 return 搜索后的结果返回网站,我认为我的问题来自 SQL 查询但我无法弄清楚。
这是我的 php 代码:
<?php
include('db_conn.php');
$output="";
$search = mysqli_real_escape_string($mysqli,$_POST["search_text"]);
$query = "SELECT * FROM unit
WHERE id LIKE '%$search%'
OR unit_code LIKE '%$search%'
OR unit_name LIKE '%$search%'
OR lecturer LIKE '%$search%'
OR semester LIKE '%$search%'
";
$result = mysqli_query($mysqli,$query);
if(mysqli_num_rows($result) > 0){
$output .='<div class="table-responsive">
<table class="table table bordered">
<tr>
<th>ID</th>
<th>Unit Code</th>
<th>Unit Name</th>
<th>Lecturer</th>
<th>Semester</th>
</tr>
';
while($row = mysqli_fetch_array($result)){
$output.='
<td>'.$row["id"].'</td>
<td>'.$row["unit_code"].'</td>
<td>'.$row["unit_name"].'</td>
<td>'.$row["lecturer"].'</td>
<td>'.$row["semester"].'</td>
</tr>
';
}
echo $output;
}
else {
echo 'Error php';
}
?>
这是 ajax:
<script type="text/javascript">
$('#search_button').click(function(){
var keywords = $('#search_text').val().trim();
$.get("search.php",
{keywords:keywords}).done(function(data){
alert('test');
$('#result').html(data);
});
});
</script>
我认为您的问题是您正在使用 $.get,但您正试图从 $_POST 变量中检索 PHP 中的值,该变量中没有任何内容,它将在$_GET 变量。
我建议您更改 ajax 调用以使用 $.ajax
<script type="text/javascript">
$('#search_button').click(function(){
var keywords = $('#search_text').val().trim();
$.ajax({
url: "search.php",
data: {search_text: keywords},
method: 'POST',
success:function(data){
$('#result').html(data);
},
});
</script>
数据数组中的第一个键应该与您在 PHP 中使用的键匹配以从 $_POST
中收集值
我正在尝试了解如何发送 AJAX 搜索的结果,但它不起作用。我想 return 搜索后的结果返回网站,我认为我的问题来自 SQL 查询但我无法弄清楚。
这是我的 php 代码:
<?php
include('db_conn.php');
$output="";
$search = mysqli_real_escape_string($mysqli,$_POST["search_text"]);
$query = "SELECT * FROM unit
WHERE id LIKE '%$search%'
OR unit_code LIKE '%$search%'
OR unit_name LIKE '%$search%'
OR lecturer LIKE '%$search%'
OR semester LIKE '%$search%'
";
$result = mysqli_query($mysqli,$query);
if(mysqli_num_rows($result) > 0){
$output .='<div class="table-responsive">
<table class="table table bordered">
<tr>
<th>ID</th>
<th>Unit Code</th>
<th>Unit Name</th>
<th>Lecturer</th>
<th>Semester</th>
</tr>
';
while($row = mysqli_fetch_array($result)){
$output.='
<td>'.$row["id"].'</td>
<td>'.$row["unit_code"].'</td>
<td>'.$row["unit_name"].'</td>
<td>'.$row["lecturer"].'</td>
<td>'.$row["semester"].'</td>
</tr>
';
}
echo $output;
}
else {
echo 'Error php';
}
?>
这是 ajax:
<script type="text/javascript">
$('#search_button').click(function(){
var keywords = $('#search_text').val().trim();
$.get("search.php",
{keywords:keywords}).done(function(data){
alert('test');
$('#result').html(data);
});
});
</script>
我认为您的问题是您正在使用 $.get,但您正试图从 $_POST 变量中检索 PHP 中的值,该变量中没有任何内容,它将在$_GET 变量。
我建议您更改 ajax 调用以使用 $.ajax
<script type="text/javascript">
$('#search_button').click(function(){
var keywords = $('#search_text').val().trim();
$.ajax({
url: "search.php",
data: {search_text: keywords},
method: 'POST',
success:function(data){
$('#result').html(data);
},
});
</script>
数据数组中的第一个键应该与您在 PHP 中使用的键匹配以从 $_POST
中收集值