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

时间:2019-03-19 23:48:26

标签: jquery arrays json jquery-ui-autocomplete

我正在将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.

1 个答案:

答案 0 :(得分:1)

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

例如,代替此:

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

执行以下操作:

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

注意,我将两个列值串联为一个字符串(中间有一个空格)。

代码不起作用的原因是,当您执行$return_arr[] = 'some_value'时,您将向json数组添加一个新元素,并且jQuery UI Autocomplete将每个元素视为一个单独的列表项。