Я пытаюсь заставить скрипт автозаполнения JQuery работать в Wordpress.Я считаю, что у меня все настроено правильно, так как я получаю ошибку при вводе данных в поле ввода, но затем я получаю следующую ошибку.Итак, я предполагаю, что что-то не так с JSON, но я просто не уверен, как отладить это.
Uncaught SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at Function.n.parseJSON (jquery.js?ver=1.12.4:4)
at Function.a.parseJSON (jquery-migrate.min.js?ver=1.4.1:2)
at Object._transformResult [as transformResult] (jquery.autocomplete.js?ver=4.9.8:133)
at Object.<anonymous> (jquery.autocomplete.js?ver=4.9.8:584)
at i (jquery.js?ver=1.12.4:2)
at Object.fireWith [as resolveWith] (jquery.js?ver=1.12.4:2)
at y (jquery.js?ver=1.12.4:4)
at XMLHttpRequest.c (jquery.js?ver=1.12.4:4)
Вот возвращаемый JSON:
["Hello world!","Email Notification","Email Notification","Formidable Style","Email Notification","Email Notification","Email Notification","Chapter Maintenance - Admin View","Chapter Info - All","Featured Members"]
Из других постов, которые я посмотрел на комментарий, он анализируется неправильно, но я не могу определить из своего исследования, как решить эту проблему.
Вот Jquery:
jQuery(document).ready(function($) {
$('#autocomplete-id').autocomplete({
source: function(name, response) {
$.ajax({
type: 'POST',
dataType: 'json',
url: '/wp-admin/admin-ajax.php',
data: 'action=get_listing_names&name='+name,
success: function(data) {
response(data);
}
});
}
});
});
Вот функция в WordPress functions.php, которую я использую для возврата JSON через admin-ajax.php
add_action('wp_ajax_nopriv_get_listing_names', 'ajax_listings');
add_action('wp_ajax_get_listing_names', 'ajax_listings');
function ajax_listings() {
global $wpdb; //get access to the WordPress database object variable
//get names of all businesses
$name = $wpdb->esc_like(stripslashes($_POST['name'])).'%'; //escape for use in LIKE statement
$sql = "select post_title
from $wpdb->posts
where post_status='publish' LIMIT 10";
$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->post_title);
echo json_encode($titles); //encode into JSON format and output
die(); //stop "0" from being output
}
Я попытался console.log (data) в область успеха,но все, что я получаю, это ошибка без каких-либо данных.
Когда я смотрю на вкладку Сеть, я вижу запросы, когда я вводю букву в поле ввода, но они показывают только: query = a или? Query = b.
ЕслиЯ нажимаю на одну из них, она загружает ту же самую страницу, на которой я сейчас нахожусь (с полем ввода автозаполнения) с? Запросом =, прикрепленным к его концу, так что это выглядит неправильно.
Я просто не уверен, почему, хотя, если он настроен правильно для получения данных от admin-ajax.php.
Мой главный вопрос, что я могу сделать, чтобы отладить этодальше?