使用json数据的jQuery自动完成

时间:2017-03-24 15:49:58

标签: jquery json ajax jquery-ui-autocomplete

我一直在墙上撞了几个小时,我似乎无法弄明白。我有一个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);
}

1 个答案:

答案 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;好像。