2015-05-23 2 views
0

Я хотел бы использовать jQuery UI Autocomplete на Wordpress, но по какой-то причине он не работает.jQuery UI Autocomplete не работает с Wordpress

Во всяком случае, я покажу вам, что у меня есть уже:

HTML

<input type="text" name="db-search" id="db-search" autocomplete="off" /> 

JavaScript

$('#db-search').autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
     type: "POST", 
     url:"/wp-content/themes/your-click/autocomplete.php", 
     data: { autocomplete: 'true' }, 
    }); 
     } 
    }, { minLength: 1 }); 

PHP (autocomplete.php)

<?php 
    global $wpdb; 
    $string = wpdb::_real_escape($_GET['term']); 
    $get_results = $wpdb->get_results("SELECT * FROM yc_customers WHERE website LIKE $string ORDER BY website ASC"); 

    $json[] = ''; 
    foreach ($get_results as $get_result) { 
     array_push($json, $get_result->website); 
    } 

    echo json_encode($json); 
    flush; 
?> 

У меня нет ошибок при тестировании с помощью хрома. Поэтому я не знаю, что не так с моим кодом, но, наверное, должно быть что-то не так с PHP.

ответ

0

Update

php на вопрос, кажется, ожидает "GET" запрос $_GET['term']? Попробуйте subsituting $string = wpdb::_real_escape($_POST['autocomplete']); для $string = wpdb::_real_escape($_GET['term']);

См Autocomplete - Remote JSONP datsource - viewsource


.autocomplete() ожидает response(Array), а также по всей видимости, Запятая , в data: { autocomplete: 'true' },

Попробуйте

$('#db-search').autocomplete({ 
    source: function (request, response) { 
       // input query 
       var term = request.term; 
       $.ajax({ 
       type: "POST", 
       url:"/wp-content/themes/your-click/autocomplete.php", 
       // "POST" `term` to server 
       data: { autocomplete: term } 
       }).then(function(data) { 
       response(data) 
       }, function error(jqxhr, textStatus, errorThrown) { 
       console.log(textStatus, errorThrown) 
       }); 
     } 
    }, 
    minLength: 1 
}); 
+0

Спасибо, теперь я получаю error: Uncaught TypeError: Невозможно использовать оператор 'in' для поиска «3» в [""]. Он показывает мне, что эта ошибка исходит от jquery.min.js. Также он говорит, что ответ (данные) (который находится в вашем коде) является анонимной функцией. –

+0

Попробуйте открыть консоль нажатием «Сеть» -> «Ответ». Ответ отправлен с сервера? Возвращается ли 'data' из' $ .post() 'массив, содержащий пустую строку' [""] '? – guest271314

+0

Когда я нажимаю «Сеть», нет так называемого «ответа». Я тестировал его с помощью Chrome и Firefox. Единственное, что я вижу, это то, что сообщение успешно отправлено на autocomplete.php, но оно ничего не возвращает. –

Смежные вопросы