如何使用 jquery 在同一行显示 json_encode 数组中的两个值?

How to display two values from json_encode array on the same line using jquery?

我将 jquery .autocomplete() 用于从 json_encode 数组获取数据的 html 搜索表单。 获取的数组在匹配时有两个值 - company_code 和 company_name.

.autocomplete() 一个一个地显示值,但我希望它们在同一行。

这是我获取数组的代码,它获取了两个值:

    $stmt = $conn->prepare('SELECT TICKER, COMPANY_NAME FROM companies WHERE TICKER LIKE :term OR COMPANY_NAME LIKE :term');
    $stmt->execute(array('term' => $_GET['term'].'%'));

    while($row = $stmt->fetch()) {
        $return_arr[] =  $row['TICKER'];
        $return_arr[] =  $row['COMPANY_NAME'];            
    }

} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

/* Toss back results as json encoded array. */
echo json_encode($return_arr);

jquery 自动完成脚本是这个:

$(function() {
$(".search").autocomplete({
    source: "/php/autocomplete.php",
    minLength: 1
});

输出结果如下: drop down menu with two items one under the other.

这很简单,您只需将列值连接在一起作为单个数组元素而不是单独的元素。

例如,而不是这个:

$return_arr[] =  $row['TICKER'];
$return_arr[] =  $row['COMPANY_NAME'];       

这样做:

$return_arr[] = $row['TICKER'] . ' ' . $row['COMPANY_NAME']; 

请注意,我将两列值连接为一个字符串(中间有一个 space)。

您的代码不起作用的原因是当您执行 $return_arr[] = 'some_value' 时,您正在向 json 数组追加一个新元素,而 jQuery UI 自动完成将每个元素视为一个单独的列表项。