Javascript 从php文件中获取输入建议后自动完成不工作
我想要实现什么? 1.建议列表(可能有相同的标签,但描述不同) 2.从建议列表中选择一个项目时,另一个输入字段的输入应更改为所选项目的相应描述 当我直接用javascript初始化var项目时,它工作正常。但当我将其更改为从php文件中获取建议列表时,只有它的选择部分起作用,并且基于部分输入的过滤结果停止起作用 有关屏幕截图,请访问github上的此链接:- 代码文件如下所示:- test\u jquery\u autocomplete.phpJavascript 从php文件中获取输入建议后自动完成不工作,javascript,php,jquery,html,sql,Javascript,Php,Jquery,Html,Sql,我想要实现什么? 1.建议列表(可能有相同的标签,但描述不同) 2.从建议列表中选择一个项目时,另一个输入字段的输入应更改为所选项目的相应描述 当我直接用javascript初始化var项目时,它工作正常。但当我将其更改为从php文件中获取建议列表时,只有它的选择部分起作用,并且基于部分输入的过滤结果停止起作用 有关屏幕截图,请访问github上的此链接:- 代码文件如下所示:- test\u jquery\u autocomplete.php <?php
<?php
include 'session_check_common.php';
include 'connect_my_sql_db.php';
?>
<!doctype html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>jQuery UI Autocomplete functionality</title>
<link href = "https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
rel = "stylesheet">
<script src = "https://code.jquery.com/jquery-1.10.2.js"></script>
<script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<style>
#project-label {
display: block;
font-weight: bold;
margin-bottom: 1em;
}
#project-description {
margin: 0;
padding: 0;
}
</style>
<!-- Javascript -->
<script>
$(function() {
/*var projects = [
{
"label": "Java",
"desc": "write once run anywhere"
},
{
"label": "Java",
"desc": "rohit here"
},
{
"label": "jQuery UI",
"desc": "the official user interface library for jQuery"
},
{
"label": "Twitter Bootstrap",
"desc": "popular front end frameworks "
}
];*/
$( "#project" ).autocomplete({
minLength: 0,
//source: projects,
source: "get_customers.php",
focus: function( event, ui ) {
$( "#project" ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$( "#project" ).val( ui.item.label );
$( "#project-description" ).html( ui.item.desc );
$( "#project-description" ).val( ui.item.desc );
return false;
}
})
.data( "ui-autocomplete" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
.appendTo( ul );
};
});
</script>
</head>
<body>
<form action="test_autocomplete.php" class="subform" method="post">
<div id = "project-label">Select a project (type "a" for a start):</div>
<input id = "project">
<input id = "project-description" name="projectdescription">
<button type="submit">SUBMIT</button>
</form>
jQuery UI自动完成功能
#项目标签{
显示:块;
字体大小:粗体;
边缘底部:1米;
}
#项目说明{
保证金:0;
填充:0;
}
$(函数(){
/*var项目=[
{
“标签”:“Java”,
“描述”:“一次写入,在任何地方运行”
},
{
“标签”:“Java”,
“描述”:“rohit在此”
},
{
“标签”:“jQuery UI”,
“desc”:“jQuery的官方用户界面库”
},
{
“标签”:“推特引导”,
“desc”:“流行的前端框架”
}
];*/
$(“#项目”).autocomplete({
最小长度:0,
//资料来源:项目,
来源:“get_customers.php”,
焦点:功能(事件、用户界面){
$(“#项目”).val(ui.item.label);
返回false;
},
选择:功能(事件、用户界面){
$(“#项目”).val(ui.item.label);
$(“#项目说明”).html(ui.item.desc);
$(“#项目说明”).val(ui.item.desc);
返回false;
}
})
.data(“ui自动完成”)。\u renderItem=功能(ul,项目){
返回$(“”)
.append(“+item.label+”
“+item.desc+”)
.附录(ul);
};
});
选择一个项目(键入“a”作为开始):
提交
并获取_customers.php
<?php
include 'connect_my_sql_db.php';
$sql="select cust_id, cust_name, father_name from customer";
$cust_name = array();
$father_name = array();
$result=mysqli_query($conn, $sql);
while($row=mysqli_fetch_assoc($result))
{
$title=$row['cust_name'];
$url=$row['father_name'];
$posts[] = array('label'=> $title, 'desc'=> $url);
}
echo json_encode($posts);
?>
您需要根据客户名称对结果进行过滤,例如
$sql="SELECT cust_id, cust_name, father_name FROM customer
WHERE cust_name LIKE '%".$_REQUEST['term']."%'";
另外,您需要初始化$posts
变量,否则将导致未定义错误,自动完成响应将失败
// add below line before while loop
$posts = array();
while($row=mysqli_fetch_assoc($result)) {
....
我不熟悉JQuery。我不知道如何将“term”传递给我的php文件。你能帮我一下吗?你不需要通过这个学期,在这里阅读更多@Roshan Kumar为什么如果我更改$posts[]=array('label'=>$title,'desc'=>$url),它就不起作用了;收件人:-$posts[]=array('cust\u name'=>title$father\u name'=>url$url);然后,请不要更改它们,否则您也需要在JS代码中更改它们。如果我想显示诸如“客户姓名父亲姓名”之类的建议,请参考。但搜索条件应仅为客户名称。只是让用户做出相应的选择,而不是一次又一次地检查,看看他想选择哪一个。