Ввод текста с автозаполнением - Uncaught TypeError: $. ajax не является функцией в PHP, MySQL и jQuery - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь выполнить автозаполнение ввода текста в jQuery с информацией о пользователях из базы данных в PHP и MySQL. Я получаю следующую ошибку:

Uncaught TypeError: $.ajax is not a function
at HTMLInputElement.<anonymous> (file.php:332)
at HTMLInputElement.dispatch (jquery-3.3.1.slim.min.js:2)
at HTMLInputElement.v.handle (jquery-3.3.1.slim.min.js:2)

Я импортирую jQuery в заголовок. php, включенный во все страницы:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

Это мой файл. php это файл со сценарием и вводом, я оставлю только часть кода, конечно, ввод находится внутри формы

<input type="text" name="autor" id="autor" placeholder="Escreve o nome do autor" />
<div id="autorLista"></div>

<script>
    $(document).ready(function() {
        $('#autor').keyup(function() {
            var query = $(this).val();;
            console.log(query);

            if (query != '') {
                $.ajax({
                    url: "./components/search.php",
                    method: "POST",
                    data: {
                        query: query
                    },
                    success: function(data) {
                        $('#autorLista').fadeIn();
                        $('#autorLista').html(data);
                    }
                });
            }
        });

        $(document).on('click', 'li', function() {
            $('#autor').val($(this).text());
            $('#autorLista').fadeOut();
        });
    });
</script>

Я даже не знаю, php код работает правильно, но я думаю, что это так. Я оставлю это ниже (поиск. php):

<?php

if (isset($_POST['query'])) {
    $link = new_db_connection();
    $stmt = mysqli_stmt_init($link);

    $output = '';

    $query = "SELECT id_user, nome_user FROM users WHERE nome_user LIKE ?";

    if (mysqli_stmt_prepare($stmt, $query)) {
        $output = "<ul>";

        if (mysqli_stmt_num_rows($stmt) > 0) {
            mysqli_stmt_bind_param($stmt, 's', $nome_user);

            mysqli_stmt_execute($stmt);

            mysqli_stmt_bind_result($stmt, $id_user, $nome_user);

            if (mysqli_stmt_fetch($stmt)) {
                $output .= "<li>" . $nome_user . "</li>";
            }
        } else {
            $output = '<li>O utilizador que procura não existe.</li>';
        }
        $output .= "</ul>";
        echo $output;
    } else {
        echo 'erro';
    }
}

Я пытался изменить версии jquery, проверил тонкую версию и т. Д. c, и ничто не делает эту работу .. Любая идея, пожалуйста? Любые сомнения или если я не был ясен, просто скажите мне, пожалуйста. Спасибо!

Ответы [ 2 ]

1 голос
/ 06 января 2020

По вашей ошибке он показывает, что вы используете jQuery slim, у которого нет Ajax.

(jquery -3.3.1.slim.min. js: 2)

Пожалуйста, убедитесь, что вы используете ТОЛЬКО обычную jQuery, а не тонкую версию.

0 голосов
/ 06 января 2020

Я импортировал уменьшенную версию при импорте bootstrap, потому что это было предложено на их веб-странице. Теперь я использую это

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

вместо

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...