我一直在墙上撞了几个小时,我似乎无法弄明白。我有一个php文件,从表中获取数据并将其转换为json并显示如下:
{"id":1,"name":"GR Gas","number":"1","gas":"0.02500000","diesel":"0.03500000"}
我在另一个写有jQuery的php网页上有jQuery UI Autocomplete插件:
$(function () {
$("#customers").autocomplete({
source: "../assets/json_clients.php",
dataType: 'json',
minLength: 2,
select: function (event, ui) {
$("customer-id").val(ui.item.number);
}
});
});
到目前为止它完成了它的工作,它读取了json,并在文本框下创建了自动完成下拉菜单,我可以点击该项目。然而,它显示了json输出的那个下拉列表中的所有内容,例如它有GR Gas,1等。我只希望它显示" name"。单击它时,它设置隐藏文本框的值,有人可以指向正确的方向吗?
提前感谢您的帮助!
修改的 这是创建json的PHP:
<?php
header('Content-Type: application/json');
require 'class_dbconnection.php';
$sql = 'SELECT id,c_name,c_number,price_gas,price_distillate FROM mb_clients';
foreach ($Conn->query($sql) as $row) {
$result = array('id' => $row['id'], 'name' => $row['c_name'], 'number' => $row['c_number'], 'gas' => $row['price_gas'], 'diesel' => $row['price_distillate']);
echo json_encode($result, JSON_FORCE_OBJECT);
}
答案 0 :(得分:1)
您可以使用&#39;来源&#39;选项作为一个函数,在那里做你的ajax并操纵返回的数据,读取源的3个选项,你需要以预期的格式返回字符串,数组或者将它用作函数:
http://api.jqueryui.com/autocomplete/#option-source
如果您添加标签&#39;它也可能有用。你的JSON,但是你没有空间来操纵其他任何东西。
以下是将其用作函数的示例:
source: function(request, response)
{
var searchTerm = request.term; // This will be the search term
$.ajax({
url: url,
data: request, // if request does not work with your php, try request.term
success: function(json)
{
var arr = [ { label: "Choice1", value: "value1" }, ... ]
response(arr);
},
error:function(errObj)
{
var arr = [];
response(arr);
}
});
},
另请参阅:http://api.jqueryui.com/autocomplete/#event-response
你甚至不需要使用&#39; source&#39;好像。