Проблема Typeahead — Ajax возвращает данные Json только один раз

Я рвал на себе волосы несколько часов с плагином Twitter Typeahead.

По сути, мы извлекаем данные из веб-службы (веб-службы Asmx) с форматом ответа .JSON.

Как только мы получаем его через BloodHound, мы конвертируем его в строку, удаляем некоторые дополнительные символы перед повторным преобразованием в Json и затем передаем в Typeahead.

 var engine= new Bloodhound({
        datumTokenizer: function (d) {
            return Bloodhound.tokenizers.whitespace("value")
        },
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        prefetch : {
            ttl : 1000,
            url : '/webservice.asmx'
        },
        remote: {
            ttl : 1000,
            url: '/webservice.asmx',
            ajax: {
                beforeSend: function (jqXhr, settings) {
                    jqXhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
                    settings.data = '{"query":"' + $('#inputText').val() + '"}';
                    alert(settings.data);
                },
                type: "POST",
                context: this
            },
            filter: function (response) {
                //return response;
                if (response.hasOwnProperty('d')) {

                    var returned = String(response.d);
                    returned = returned.slice(14,-1);

    var parsedJSON =     jQuery.parseJSON(returned);
                    return  parsedJSON ;
                }
                else {
                    return response;
                }
            }
        }
    });

    engine.initialize();

    $('#inputText').typeahead(null, {
        source: engine.ttAdapter()
    });

При вводе в поле ввода код извлекает данные на основе запроса через Ajax ОДИН РАЗ и ОДИН РАЗ, однако он пропускает их через фильтр несколько раз, когда пользователь вводит больше символов в поле ввода. Я считаю, что это проблема. Поскольку мы должны использовать тип POST из-за метода использования веб-службы Asmx, Ajax, похоже, не может сделать более одного запроса, независимо от того, сколько символов мы вводим в поле ввода.

Как я уже сказал, это сводит нас с ума уже несколько дней, поэтому любая помощь будет невероятно признательна.


person Liam Richardson    schedule 26.06.2014    source источник


Ответы (1)


Этот блог помог найти ответ: http://www.weezey.com/2014/03/bringing-it-all-together/

Похоже, мы немного усложнили ситуацию. Нам по-прежнему приходилось вырезать и повторно преобразовывать Json, который наш веб-сервер выплевывал обратно в раздел Ajax, но у нас все заработало.

person Liam Richardson    schedule 27.06.2014