AJAX, JQuery Ud / PHP: POST 方法自动完成未显示
AJAX, JQuery Ud / PHP: POST Method Autocomplete not showing up
我目前正在创建一个带有 "autocomplete" 功能初始化的 Wordpress 模板,代码如下。目前我的自动完成功能不工作,也没有显示任何内容。检查系统,它给我...
Uncaught ReferenceError: request is not defined
我最近有一个自动完成功能,但它无法使用键盘向上、向下和输入功能的自动完成功能。它可以使用鼠标,但不能使用键盘功能。它位于 wordpress 模板上,目前仅由鼠标控制。另一个关键因素是它是 "POST" 而不是 "GET"。另一个关键因素是我确实有一个隐藏的输入字段,其 id 称为 "search-id"。 "search-id" 的隐藏输入字段随着 id 更新并发送到服务器,而 "search-box" 输入字段只向用户显示完整的描述,但如果值是我们发送的只是 id。可以在 HTML 和 PHP 中看到...请帮助解释为什么我的自动完成功能不起作用?
JQuery UI / AJAX
<script>
$(document).ready(function(){
$("#search-box").autocomplete({
minLength: 2,
source: function(request, response){
$.ajax({
type: "POST",
url: "autocomplete.php",
data:'keyword=' + req.term,
success: response,
dataType: 'json',
minLength: 2,
delay: 100
});
},
select: function(event, ui){
$("#search-box").val(ui.item.label);
$("#search-id").val(ui.item.value);
return false;
}
});
});
/* function selectCountry(val) {
$("#search-id").val(val);
$("#suggesstion-box").hide();
}
function updateSearchBox(el) {
$("#search-box").val($(el).html());
} */
</script>
HTML
<form role="search" name="remarks_lookup" id="myForm" method="post" class="search-form" action="remarks-look-up" >
<div style="background-color:#ffffff; width:100%; float:left; padding-bottom:25px; clear:both; ">
<div class="frmSearch " style="width:80%; float:left;" >
<label>
<input type="search" name="jurisdiction_search" id="search-box" placeholder="Enter County, City, or Client Name" autocomplete="off" />
<input type="hidden" name="search" id="search-id" />
<div class="box" id="suggesstion-box"></div>
</label>
</div>
<div style="width:20%; float:left; clear:right;">
<label>
<input style="width:100%; height: 50px;" type="submit" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</label>
</div>
</div>
</form>
Autocomplete.php
<?php
include_once "functions.php";
if(isset($_POST['keyword']))
{
$database = lookup_connectToDatabase();
$result = pg_query($database, "SELECT country, id, state FROM customers WHERE country iLIKE '" . $_POST["keyword"] . "%' OR id iLIKE '" . $_POST["keyword"] . "%' ORDER BY country");
if (!$result){
echo "<div class='show' align='left'>No matching records.</div>";
}else {
while($row=pg_fetch_assoc($result)){
$array[] = array(
'label' = $row['id'].': '.$row['country'].', '.$row['state'],
'value' = $row['id'],
);
}
echo json_encode ($array);
}
}
?>
总的来说,我想要完成的是能够使用键盘功能(比如向上和向下箭头,或者甚至在建议框上按下回车键,然后让搜索 ID 输入字段显示描述,这他们必须再次按下回车键,它会将搜索 ID 发送到服务器。
过去一个月我一直在研究这个问题,试图找出不同的方法来修复我的自动完成功能。我是 JSON、JQuery-UI 和 Ajax 的新手。我确实需要任何人的帮助才能在我的网站上完成此功能。请帮忙!
如果您愿意提供帮助并想仔细查看代码甚至测试它,请告诉我。我需要任何可能的帮助来完成此自动完成功能。
想通了....下面是我的答案....
JQuery UI
<script>
$(document).ready(function(){
$("#search-box").autocomplete({
minLength: 2,
source: function(request, response){
$.ajax({
type: "POST",
url: "autocomplete.php",
dataType: "json",
data:'keyword=' + request.term,
success: function(data){
response(data);
}
});
},
select: function(event, ui){
$("#search-box").val(ui.item.label);
$("#search-id").val(ui.item.value);
return false;
}
});
});
</script>
HTML
<form role="search" name="remarks_lookup" id="myForm" method="post" class="search-form" action="/VCSWeb/remarks-look-up/" >
<div style="background-color:#ffffff; width:100%; float:left; padding-bottom:25px; clear:both; ">
<div class="frmSearch " style="width:80%; float:left;" >
<label>
<input size="59" maxlength="75" type="search" name="jurisdiction_search" class="search_keyword" id="search-box" placeholder="Enter Jurisdiction, County, City, or Client Name" />
<input type="hidden" name="search" id="search-id" />
</label>
</div>
<div style="width:20%; float:left; clear:right;">
<label>
<input class="search_button" style="width:100%; height: 50px;" type="submit" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</label>
</div>
</div>
</form>
PHP
<?php
if(isset($_POST['keyword']))
{
$database = lookup_connectToDatabase();
$result = pg_query($database, "SELECT country, id, state FROM customers WHERE country iLIKE '" . $_POST["keyword"] . "%' OR id iLIKE '" . $_POST["keyword"] . "%' ORDER BY country");
if (!$result){
echo "<div class='show' align='left'>No matching records.</div>";
}else {
while($row=pg_fetch_array($result)){
$array[] = array(
'label' => '('.$row['id'].') '.$row['country'].', '.$row['state'],
'id' => $row['country'].', '.$row['state'],
'value' => $row['id'],
);
}
echo json_encode ($array);
}
}
?>
我目前正在创建一个带有 "autocomplete" 功能初始化的 Wordpress 模板,代码如下。目前我的自动完成功能不工作,也没有显示任何内容。检查系统,它给我...
Uncaught ReferenceError: request is not defined
我最近有一个自动完成功能,但它无法使用键盘向上、向下和输入功能的自动完成功能。它可以使用鼠标,但不能使用键盘功能。它位于 wordpress 模板上,目前仅由鼠标控制。另一个关键因素是它是 "POST" 而不是 "GET"。另一个关键因素是我确实有一个隐藏的输入字段,其 id 称为 "search-id"。 "search-id" 的隐藏输入字段随着 id 更新并发送到服务器,而 "search-box" 输入字段只向用户显示完整的描述,但如果值是我们发送的只是 id。可以在 HTML 和 PHP 中看到...请帮助解释为什么我的自动完成功能不起作用?
JQuery UI / AJAX
<script>
$(document).ready(function(){
$("#search-box").autocomplete({
minLength: 2,
source: function(request, response){
$.ajax({
type: "POST",
url: "autocomplete.php",
data:'keyword=' + req.term,
success: response,
dataType: 'json',
minLength: 2,
delay: 100
});
},
select: function(event, ui){
$("#search-box").val(ui.item.label);
$("#search-id").val(ui.item.value);
return false;
}
});
});
/* function selectCountry(val) {
$("#search-id").val(val);
$("#suggesstion-box").hide();
}
function updateSearchBox(el) {
$("#search-box").val($(el).html());
} */
</script>
HTML
<form role="search" name="remarks_lookup" id="myForm" method="post" class="search-form" action="remarks-look-up" >
<div style="background-color:#ffffff; width:100%; float:left; padding-bottom:25px; clear:both; ">
<div class="frmSearch " style="width:80%; float:left;" >
<label>
<input type="search" name="jurisdiction_search" id="search-box" placeholder="Enter County, City, or Client Name" autocomplete="off" />
<input type="hidden" name="search" id="search-id" />
<div class="box" id="suggesstion-box"></div>
</label>
</div>
<div style="width:20%; float:left; clear:right;">
<label>
<input style="width:100%; height: 50px;" type="submit" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</label>
</div>
</div>
</form>
Autocomplete.php
<?php
include_once "functions.php";
if(isset($_POST['keyword']))
{
$database = lookup_connectToDatabase();
$result = pg_query($database, "SELECT country, id, state FROM customers WHERE country iLIKE '" . $_POST["keyword"] . "%' OR id iLIKE '" . $_POST["keyword"] . "%' ORDER BY country");
if (!$result){
echo "<div class='show' align='left'>No matching records.</div>";
}else {
while($row=pg_fetch_assoc($result)){
$array[] = array(
'label' = $row['id'].': '.$row['country'].', '.$row['state'],
'value' = $row['id'],
);
}
echo json_encode ($array);
}
}
?>
总的来说,我想要完成的是能够使用键盘功能(比如向上和向下箭头,或者甚至在建议框上按下回车键,然后让搜索 ID 输入字段显示描述,这他们必须再次按下回车键,它会将搜索 ID 发送到服务器。
过去一个月我一直在研究这个问题,试图找出不同的方法来修复我的自动完成功能。我是 JSON、JQuery-UI 和 Ajax 的新手。我确实需要任何人的帮助才能在我的网站上完成此功能。请帮忙!
如果您愿意提供帮助并想仔细查看代码甚至测试它,请告诉我。我需要任何可能的帮助来完成此自动完成功能。
想通了....下面是我的答案....
JQuery UI
<script>
$(document).ready(function(){
$("#search-box").autocomplete({
minLength: 2,
source: function(request, response){
$.ajax({
type: "POST",
url: "autocomplete.php",
dataType: "json",
data:'keyword=' + request.term,
success: function(data){
response(data);
}
});
},
select: function(event, ui){
$("#search-box").val(ui.item.label);
$("#search-id").val(ui.item.value);
return false;
}
});
});
</script>
HTML
<form role="search" name="remarks_lookup" id="myForm" method="post" class="search-form" action="/VCSWeb/remarks-look-up/" >
<div style="background-color:#ffffff; width:100%; float:left; padding-bottom:25px; clear:both; ">
<div class="frmSearch " style="width:80%; float:left;" >
<label>
<input size="59" maxlength="75" type="search" name="jurisdiction_search" class="search_keyword" id="search-box" placeholder="Enter Jurisdiction, County, City, or Client Name" />
<input type="hidden" name="search" id="search-id" />
</label>
</div>
<div style="width:20%; float:left; clear:right;">
<label>
<input class="search_button" style="width:100%; height: 50px;" type="submit" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</label>
</div>
</div>
</form>
PHP
<?php
if(isset($_POST['keyword']))
{
$database = lookup_connectToDatabase();
$result = pg_query($database, "SELECT country, id, state FROM customers WHERE country iLIKE '" . $_POST["keyword"] . "%' OR id iLIKE '" . $_POST["keyword"] . "%' ORDER BY country");
if (!$result){
echo "<div class='show' align='left'>No matching records.</div>";
}else {
while($row=pg_fetch_array($result)){
$array[] = array(
'label' => '('.$row['id'].') '.$row['country'].', '.$row['state'],
'id' => $row['country'].', '.$row['state'],
'value' => $row['id'],
);
}
echo json_encode ($array);
}
}
?>