Как отобразить два значения из массива json_encode в одной строке, используя jquery? - PullRequest
0 голосов
/ 20 марта 2019

Я использую jquery .autocomplete () для формы поиска html, которая получает данные из массива json_encode. Выбранный массив имеет два значения при совпадении - 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
});

Выход получается как: выпадающее меню с двумя пунктами один под другим.

1 Ответ

1 голос
/ 20 марта 2019

Это довольно просто, вы можете просто объединить значения столбцов вместе как один элемент массива вместо отдельных элементов.

Например, вместо этого:

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

Сделайте это:

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

Обратите внимание: я объединяю два значения столбца в одну строку (с пробелом в середине).

Причина, по которой ваш код не работает, заключается в том, что когда вы делаете $return_arr[] = 'some_value', вы добавляете новый элемент в массив json, а автозаполнение пользовательского интерфейса jQuery видит каждый элемент как отдельный элемент списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...