Я работаю над проектом на 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>
и, наконец, форма, в которой должны отображаться предложения из базы данных.






Попробуйте этот код.
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',
Вы использовали этот скрипт в файле js или файле PHP?
js файл. и код PHP, который я добавил в файл функций внизу. Я даже попытался добавить два предупреждения в файл js, одно в начале и одно в конце, и оба они отображаются.
Вам нужно заменить это в своем URL-адресе ajax: 'wp-admin / admin-ajax.php'
мне нужно добавить ссылку на PHP в форму? как действие на поле блюда? Я следовал этому руководству, чтобы создать код davidnash.com.au/create-an-auto-complete-field-in-wordpress
Нет. Вам нужно изменить URL-адрес ajax в автоматическом заполнении URL-адреса ajax.
все еще не. просто для ясности, поэтому jquery должен быть добавлен в отдельный файл в каталоге, например js / my-js.js, а php должен быть добавлен в functions. php правильно?
Пожалуйста, поделитесь мне URL-адресом вашего сайта
какой адрес сайта?
Не думаю, что это может быть база данных. Я создал простую базу данных MySQL с именем идентификатора и килокалью, и когда я использую ее для вывода формы, она работает.
я проверил ваш сайт. кажется, что URL-адрес ajax неверен. он получает ошибку 404.
Я обновил свой ответ, пожалуйста, проверьте обновленный ответ.
ок, меняю и больше ошибок 404 нет. о PHP-коде для базы данных, моей базе данных в качестве пароля и имени администратора, мне нужно выполнить подключение mysqli к базе данных или wpdb подключиться напрямую к ней?
Wpdb правильный. Вы распечатали SQL-запрос? Если нет, напечатайте запрос и выполните запрос в базе данных. Что возвращается запрос?
все еще не работает :( не показывает никаких предложений. и никаких ошибок в консоли. PHP в порядке?