Функция автозаполнения Jquery не будет автозаполняться данными PHP, Mysql - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь создать функцию автозаполнения с помощью JQuery, но результаты не отображаются. В консоли браузера я вижу, что запросы работают:

imageenter image description here">

Это моя функция поиска

public function getAllartikelSearch()
{
    $statement = $this->connection->prepare("SELECT * FROM lievers_serienummers.artikel where artikelNummer like :keyword");
    $statement->bindValue('keyword', '%' . $_GET['term'] . '%');
    $statement->execute();
    $result = array();
    while($product = $statement->fetch(PDO::FETCH_OBJ)) {
        array_push($result, $product->artikelNummer);
    }
    echo json_encode($result);
}

Это вызывается при поиске. php

<?php
require_once 'database.php';
require_once 'autoloader.php';

$overzichtmanager = new overzichtmanager();
$overzichtmanager->getAllartikelSearch();
?>

А вот и код автозаполнения:

<script>
    $(document).ready(function () {
        $('#tags').autocomplete({
            source: 'search.php'
        });
    });
</script>

<body>

<header>
    <h1>Toevoegen</h1>
</header>
<div class="ui-widget">
    <label for="tags">Tags: </label>
    <input id="tags" name="term"/>
    <div id="countryList"></div>
</div>

1 Ответ

1 голос
/ 06 марта 2020

Вы не должны использовать echo из метода, только return. Вы не должны ничего выводить, кроме как из лога вашего контроллера c. Также избегайте использования глобальных переменных внутри метода, вместо этого передавайте значение в качестве параметра. Кроме того, нет необходимости в oop, когда вы можете использовать функцию PDO fetchAll().

public function getAllartikelSearch($term)
{
    $sql = "SELECT artikelNummer FROM artikel where artikelNummer like :keyword";
    $statement = $this->connection->prepare($sql);
    $statement->execute(["keyword" => "%$term%"]);
    $result = $statement->fetchAll(PDO::FETCH_COLUMN, 0);
    return json_encode($result);
}

Теперь поиск. php может выглядеть так, устанавливая правильные заголовки и выводя JSON к сценарию. Не закрывайте код PHP, если после него в том же файле не указано HTML.

<?php
require_once 'database.php';
require_once 'autoloader.php';

$overzichtmanager = new overzichtmanager();
$json = $overzichtmanager->getAllartikelSearch($_GET["term"]);
header("Content-Type: application/json");
echo $json;

Попробуйте, и он должен хорошо работать. Я подозреваю, что отсутствие заголовка вызывало проблемы или, возможно, вывод других данных до или после JSON. Если проблемы продолжаются, проверьте консоль JS в своем браузере на наличие сообщений об ошибках и отредактируйте свой вопрос, чтобы включить их.

...