Автозаполнение поля wordpress с помощью ajax

Я работаю над проектом на WordPress, и у меня возникли проблемы с полем автозаполнения в моей форме. Ввод не отображается, и в консоли нет ошибок. Я создал небольшую базу данных на одной из баз данных WordPress. Я не очень хорошо знаком с AJAX, поэтому будьте добры :)

jQuery(document).ready(function($) {    

jQuery('#dish').autoComplete({
source: function(name, response) {
    jQuery.ajax({
        type: 'POST',
        dataType: 'json',
        url: 'wp-admin/admin-ajax.php',
        data: 'action=get_listing_names&name='+name,
        success: function(data) {
            response(data);
        }
    });
}
});

});

Это мой код jQuery, и я добавил admin-ajax в ту же папку, что и думал, что он его не нашел (это my_serach.js).

function ajax_listings() {
global $wpdb; //get access to the WordPress database object variable

//get names of all businesse
$name = $wpdb->esc_like(stripslashes($_POST['name'])).'%'; //escape for use in LIKE statement
$sql = "select name 
    from $wpdb->global 
    where name like %s 
    and post_type='portfolio' and post_status='publish'";

$sql = $wpdb->prepare($sql, $name);
$results = $wpdb->get_results($sql);

//copy the business titles to a simple array
$titles = array();
foreach( $results as $r )
    $titles[] = addslashes($r->name );

echo json_encode($titles); //encode into JSON format and output
die(); //stop "0" from being output

Я добавляю этот код на functions.php по теме, над которой я работаю

 <form method = "POST">
    <div id = "container">
        <div><label class = "plate_label">Dish:</label><input type = "text"    name = "dish_name[]" id = "dish" class = "dish" placeholder = "Enter plate name" />
            <label class = "quantity_label">Quantity:</label><input type = "text" name = "dish_quantity[]"  class = "quantity" placeholder = "Enter gram or pieces/slices" /></div>
        </div>

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
904
1

Ответы 1

Попробуйте этот код.

jQuery(document).ready(function($) {    

jQuery('#dish').autoComplete({
    source: function(name, response) {
    jQuery.ajax({
        type: 'POST',
        dataType: 'json',
        url: 'http://caloriless.com/wp-admin/admin-ajax.php',
        data: 'action=get_listing_names&name='+name,
        success: function(data) {
        response(data);
        }
    });
    }
});

});

изменить URL-адрес ajax url: 'wp-admin/admin-ajax.php', или url: 'http://caloriless.com/wp-admin/admin-ajax.php',

все еще не работает :( не показывает никаких предложений. и никаких ошибок в консоли. PHP в порядке?

Stefano Baù 03.04.2018 18:52

Вы использовали этот скрипт в файле js или файле PHP?

Vel 03.04.2018 22:03

js файл. и код PHP, который я добавил в файл функций внизу. Я даже попытался добавить два предупреждения в файл js, одно в начале и одно в конце, и оба они отображаются.

Stefano Baù 03.04.2018 22:18

Вам нужно заменить это в своем URL-адресе ajax: 'wp-admin / admin-ajax.php'

Vel 03.04.2018 22:50

мне нужно добавить ссылку на PHP в форму? как действие на поле блюда? Я следовал этому руководству, чтобы создать код davidnash.com.au/create-an-auto-complete-field-in-wordpress

Stefano Baù 03.04.2018 23:12

Нет. Вам нужно изменить URL-адрес ajax в автоматическом заполнении URL-адреса ajax.

Vel 04.04.2018 05:47

все еще не. просто для ясности, поэтому jquery должен быть добавлен в отдельный файл в каталоге, например js / my-js.js, а php должен быть добавлен в functions. php правильно?

Stefano Baù 04.04.2018 22:03

Пожалуйста, поделитесь мне URL-адресом вашего сайта

Vel 06.04.2018 18:33

какой адрес сайта?

Vel 07.04.2018 13:28
caloriless.com/index.php/calories-calculator извините за дизайн, но я все еще работаю над этим
Stefano Baù 07.04.2018 18:00

Не думаю, что это может быть база данных. Я создал простую базу данных MySQL с именем идентификатора и килокалью, и когда я использую ее для вывода формы, она работает.

Stefano Baù 08.04.2018 14:11

я проверил ваш сайт. кажется, что URL-адрес ajax неверен. он получает ошибку 404.

Vel 09.04.2018 08:06

Я обновил свой ответ, пожалуйста, проверьте обновленный ответ.

Vel 09.04.2018 08:08

ок, меняю и больше ошибок 404 нет. о PHP-коде для базы данных, моей базе данных в качестве пароля и имени администратора, мне нужно выполнить подключение mysqli к базе данных или wpdb подключиться напрямую к ней?

Stefano Baù 09.04.2018 18:43

Wpdb правильный. Вы распечатали SQL-запрос? Если нет, напечатайте запрос и выполните запрос в базе данных. Что возвращается запрос?

Vel 09.04.2018 18:52

Другие вопросы по теме