自动完成问题 - php

我正在尝试使用jquery自动完成功能在input字段中显示用户列表。我在显示名称和选择更新值到字段时遇到问题。

我的PHP代码:

    include '../_db.php';

    // get what user typed in autocomplete input
    $name = trim($_GET['name']);

    $param = "%{$name}%";
    $query = $conn->prepare('SELECT emp_number, emp_firstname, emp_lastname FROM `hs_hr_employee` WHERE emp_firstname LIKE ? OR emp_lastname LIKE ? ');
    $query->bind_param('ss', $param,$param);
    $query->execute();

    $query->bind_result($emp_number,$emp_firstname,$emp_lastname);
    $a_json = array();
    $a_json_row = array();

    while( $query->fetch() )
    {
        $a_json_row["emp_number"] = $emp_number;
        $a_json_row["fname"] = $emp_firstname;
        $a_json_row["lname"] = $emp_lastname;
        array_push($a_json, $a_json_row);
    }

    $json = json_encode($a_json);
    print $json;

    $query->close();

我的JS代码

$(function()
{
    $( "#search-emp" ).autocomplete(
    {
        source: function (request, response)
        {
            var form_data = {
                ajax                : '1',
                name                : $("#search-emp").val(),
                actioncall          : 'search-emp'
            };

            $.ajax({
                type: "POST",
                url: "_ajax.php",
                data: form_data,
                success: function(response)
                {
                    $.each( response, function( key, value )
                    {
                        //alert( key + ": " + value );
                        console.log('element at index ' + key + ' is ' + JSON.parse(value));
                    });
                    //console.log(response);
                },
                dataType: 'json'
            });
        }
    }, {minLength: 3 });
});

得到回应

[{“ emp_number”:1,“ fname”:“ Arslan”,“ lname”:“哈桑”},{“ emp_number”:2,“ fname”:“ Muneeb”,“ lname”:“ Janjua”
},{“ emp_number”:3,“ fname”:“ hr”,“ lname”:“ user”}]

我的HTML代码

<form class="form-inline">
    <div class="form-group">
        <label for="exampleInputName2">Employee Name: </label>
        <input id="search-emp" type="text" class="form-control" placeholder="*">
    </div>
    <div class="form-group">
        <label for="exampleInputEmail2">Date Range: </label>
        <input type="text" class="form-control" id="dp-from" placeholder="From">
        <input type="text" class="form-control" id="dp-to" placeholder="To">
    </div>
    <button type="submit" class="btn btn-primary">Genrate Report</button>
</form>

参考方案

问题是因为jQuery自动完成功能希望有两个名为labelvalue的字段。 label中的内容将显示在自动完成中。

因为您的服务器返回密钥的其他名称,所以您有2个选择:

更改服务器以返回json,例如:

[{"emp_number":1,"fname":"Arslan","lname":"Hassan", "label":"Arslan Hassan", "value": "Arslan Hassan"},....]
或在来自ajax的成功回调中,使用此字段(labelvalue)创建一个数组,然后将此数组传递给response()回调。

您可以在这里找到更多信息:http://api.jqueryui.com/autocomplete/#option-source

PHP-复选框组 - php

我有一个需要发布的表单复选框组。<input type="checkbox" value="true" checked name="chk0[]"> <input type="checkbox" value="false" name=…

PHP-MySQL结果转换为JSON - php

我试图了解如何将MySQL结果转换为JSON格式,以便以后可以在Javascript中使用此JSON来构建HTML表。但是我的代码只是产生大量的空值,我还不明白为什么。$result = mysqli_query($con, "SELECT * FROM Customers"); $test = json_encode($result);…

PHP Count数组元素 - php

嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

PHP:将数据从二维数组复制到一维数组的最快方法 - php

我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…