我有一个jQueryUI自动完成脚本,可从SQL查询中提取结果。一切正常,并且表单字段返回我期望的“员工ID-员工姓名”

autocomplete.js

$(document).ready(function() {
    $("#emp_lookup").addClass("grey_text");
    $("#emp_lookup").autocomplete({
        source: "/lookup.php",
        minLength: 2
    });
});


lookup.php

<?php
    // Query to get users
        $_emp_lookup = $_GET['term'];

        $q = "SELECT `emp_id`, `fn`, `ln`, `full_name`, `display_name`, `is_active` FROM `emp_info` WHERE (`emp_id` LIKE '%".$emp_lookup."%' OR `fn` LIKE '%".$emp_lookup."%' OR `ln` LIKE '%".$emp_lookup."%' OR `full_name` LIKE '%".$emp_lookup."%' OR `display_name` LIKE '%".$emp_lookup."%') AND `is_active` = 1";
        $r = mysqli_query($connect, $q);

        $employee = array();
        if(mysqli_num_rows($r) > 0){
            while($row = mysqli_fetch_assoc($r)){
                $result = $row['emp_id']." - ".$row['display_name'];
                array_push($employee, $result);
            }
        }else{
            $result = "No employee found";
            array_push($employee, $result);
        }

        $json = json_encode($employee);
        echo $json;
?>


我遇到的问题是,提交表单时,我只想将Employee ID传递给处理脚本。因此,“员工姓名”位于自动完成结果中的事实严格出于可读性考虑。 DNS名称使用相同的方法,因此我们不必记住IP地址。

最佳答案

您可以在jQuery UI自动完成功能中使用客户渲染方法来解析php脚本提供的结果:

http://api.jqueryui.com/autocomplete/#event-response

对于PHP代码,请确保您验证/清除用户输入。您的脚本容易受到SQL注入的攻击。

09-10 22:51