我使用ajax调用来查询mysql数据库以搜索用户列表。
这里是html;
<input type="text" id="partnerName" name="partnerName" class="form-control" placeholder="Type to search partners....">
<div id="partnerList" style="background-color:#beb6ac;"></div>
这是我的职责。
$(document).ready(function() {
$('#busTradingName').keyup(function() {
var query = $(this).val();
if (query != '') {
$.ajax({
url: "search/empsearch.php",
method: "POST",
data: {
query: query
},
success: function(data) {
$('#empList').fadeIn();
$('#empList').html(data);
}
});
}
});
$(document).on('click', 'li', function() {
$('#busTradingName').val($(this).text());
$('#empList').fadeOut();
});
});
以下是查询:
if(isset($_POST["query"])){
$output = '';
$query = "SELECT busTradingName FROM organisation WHERE busTradingName LIKE '%".$_POST["query"]."%'";
$result = mysqli_query($connection, $query);
$output = '<ul class="list-unstyled">';
if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_array($result))
{
$output .= '<li>'.$row["busTradingName"].'</li>';
}
}
else
{
$output .= '<li>Not Found</li>';
}
$output .= '</ul>';
echo $output;
}
这很管用。但是如果我想使用相同的函数,以相同的形式,我的其他输入字段也会得到更新(即使id不同,并且查询位于不同的php文件中)。如。
这个html;
<input type="text" name="busTradingName" id="busTradingName" placeholder="Last employer's trading name">
<div id="empList"></div>
此功能;
$(document).ready(function() {
$('#partnerName').keyup(function() {
var query = $(this).val();
if (query != '') {
$.ajax({
url: "search/search.php",
method: "POST",
data: {
query: query
},
success: function(data) {
$('#partnerList').fadeIn();
$('#partnerList').html(data);
}
});
}
});
$(document).on('click', 'li', function() {
$('#partnerName').val($(this).text());
$('#partnerList').fadeOut();
});
});
使用此查询;
if(isset($_POST["query"])){
$output = '';
$query = "SELECT * FROM cards WHERE surname LIKE '%".$_POST["query"]."%'";
$result = mysqli_query($connection, $query);
$output = '<ul class="list-unstyled">';
if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_array($result))
{
$output .= '<li>'.$row["surname"].'</li>';
}
}
else
{
$output .= '<li>Not Found</li>';
}
$output .= '</ul>';
echo $output;
}
这将使用相同的数据更新两个输入字段。你知道为什么我的查询没有被传递到一个特定的输入,而是在我的表单中填充吗?
1条答案
按热度按时间gab6jxml1#
仔细看,这两个事件处理程序有一些共同点:
e、 g.两者都连接到同一元件上(
document
). 另外,在这两种情况下,每个click
事件在类型为的元素上触发li
. 因此,理论上,这两个独立的代码片段可以结合在一起:这种“安排”更强调问题。e、 g.所有输入同时更新。
为了避免这种行为,您可以将每个事件处理程序附加到相应的“父”元素,而不再附加到
document
. 最后的代码如下所示: