希望找到答案。
我在PHP中构建一个Web应用程序,其中包含记录列表和一些搜索字段。 其中一个搜索字段是“customernumber”。 Customernumbers保存在本地数据库(MySQL)中。如果我搜索客户编号,它会给我相应的结果 - 数据库的行=>逻辑。
现在我想用jQuery UI Autocomplete为这个搜索字段构建一个扩展。
我想做什么:
我希望用户能够在搜索字段“customernumber”中搜索customerNAME,并且自动填充将在值中提供正确的客户编号。
客户名也使用customernumber保存在外部ODBC数据库中。
我已经做了什么:
我试图从外部ODBC数据库中获取所有名称和数字,我得到了一个这样的列表:
customername: somename1
customernumber: number1
customername: somename2
customernumber: number2
customername: somename3
customernumber: number3
... and so on
如果我使用ajax调用自动完成此列表,它根本不起作用。
有人可以帮帮我!?经过几次搜索后,我无法在互联网或其他任何地方找到答案。
我真的很棒! 谢谢!
我到目前为止的例子:
jQuery脚本:
<script
$(function() {
function log( message ) {
$( "<div/>" ).text( message ).prependTo( "#log" );
$( "#log" ).scrollTop( 0 );
}
$( "#customer" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "customers.php",
dataType: "json",
success: function( data ) {
response( function( item ) {
return {
label: item.customername,
value: item.customernumber
}
});
}
});
},
minLength: 3,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
}
});
});
</script>
输入HTML:
<div class="ui-widget">
<label for="customer">Search</label>
<input id="customer" />
</div>
customers.php中的SQL查询
$connection = odbc_connect('host', 'username', 'password')
or die('Connection failed!');
$sql = "SELECT 'customername', 'customernumber' FROM 'database.table'";
$results = odbc_exec($connection, $sql);
while($myRow = odbc_fetch_array($results)){
$rows[] = $myRow;
};
foreach($rows as $row) {
foreach($row as $key => $value) {
echo $key . ': '. $value . '<br/>';
}
};
要清楚
我在搜索框中输入了customerNAME, 我想检索customerNUMBER作为值。
答案 0 :(得分:1)
您必须以正确的格式传回数据。
while($r = odbc_fetch_array($results))
$rows[] = array("label" => $r[0], "value" => $r[1]);
echo json_encode($rows);
$("#search").autocomplete({
//define callback to format results
source: function(request, response){
//pass request to server
$.getJSON("query.php?term=" + request.term, function(data) {
response(data);
});
});
});
有关更多选项,请参阅jQuery UI documentation。
修改强> 您当前解决方案的问题
odbc_fetch_array可能会在某些RDBS上返回没有列名的值(使用print_r进行调试)
姓名 鲍勃123
变为
Array
(
[0] => "Bob"
[1] => 123
)
JSON输出甚至无效(使用firebug进行调试),我们示例的当前输出将是:
0: “鲍勃” 1:123