Проблема с jquery autocomplete

Тема в разделе "JavaScript", создана пользователем KODEAK, 9 фев 2015.

Модераторы: ZiX
  1. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    160
    Симпатии:
    15
    Для автозаполнения решил использовать плагин jquery

    код
    Код:
     
    $("#search").autocomplete({
                source: function (request, response) {
                    jQuery.get("http://*****/users/api", {
                        q: request.term
                    }, function (data) {
                              response(data);
                    });
                },
    ответ сервера
    Код:
    echo json_encode(array('t', 'c', 'b'));
    но не работает ничего =( Подскажите пожалуйста где ошибка ?
     
  2. Gregurco

    Gregurco Создатель

    Регистр.:
    8 дек 2014
    Сообщения:
    16
    Симпатии:
    1
    Смотрите что выводится в консоли + посмотрите что выводится по адресу http://*****/users/api , возможно в ответ попадает что-то лишнее, и распарсить неполучается.
     
  3. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    160
    Симпатии:
    15
    TypeError: ["t","c","b"] is not a valid argument for 'in' (evaluating 'b-1 in a') - в консоли
     
  4. warg

    warg Постоялец

    Регистр.:
    26 июн 2007
    Сообщения:
    125
    Симпатии:
    137
    возможно не может определить тип данных корректно, попробуй указать dataType

    Код:
    $("#search").autocomplete({
                source: function (request, response) {
                    jQuery.get("http://*****/users/api", {
                        q: request.term
                    }, function (data) {
                              response(data);
                    }, "json");
     
  5. cyber_punker

    cyber_punker Создатель

    Регистр.:
    12 ноя 2014
    Сообщения:
    6
    Симпатии:
    10
    Нужно читать доку перед началом использования, тогда таких вопросов возникать не будет.
    Вот пример json которы хавает автокомплит.
    Код:
    [
        {
            "id": "mysql-in-a-nutshell",
            "value": "MySQL in a Nutshell",
            "label": "<span class=\"hl_results\">MySQL</span> in a Nutshell"
        },
        {
            "id": "how-to-use-php-improved-mysqli-extension-and-why-you-should",
            "value": "How to Use PHP Improved MySQLi extension (and Why You Should)",
            "label": "How to Use PHP Improved <span class=\"hl_results\">MySQL</span>i extension (and Why You Should)"
        },
        {
            "id": "is-it-time-to-remove-mysql-in-favor-of-mariadb-in-production-servers",
            "value": "Is it time to Remove MySQL in favor of MariaDB in Production Servers?",
            "label": "Is it time to Remove <span class=\"hl_results\">MySQL</span> in favor of MariaDB in Production Servers?"
        }
    ]
    Это стандартный пареср, его можно изменить, пере-определив методы

    Код:
    $....autocomplete(url,{
          ...<other params>...
           parse: function(data){
                if(!data){
                    console.log('no results') 
                }
            }
    }
    На самом деле пере-определить нужно еще методы рендер, хотя в вашем случае думаю можно обойтись стандартным.