typeahead.js удаленная предварительная отправка вопроса о публикации данных

Я уже разместил это на github, но подумал, что мог бы спросить здесь и найти ответ.

Я пытаюсь использовать удаленный запрос в качестве нашего источника данных для typeahead. Для этого я хотел бы создать POST и поместить параметры моего запроса в полезную нагрузку. Когда я устанавливаю для settings.type значение POST в функции beforeSend, это работает, но когда я устанавливаю settings.data, я не вижу данных, устанавливаемых в моих отладчиках, а затем в своем примере я использую простой сервис http, который возвращает ваш полезная нагрузка, и это также подтверждает, что данные не отправляются. Под typeahead.js используется jQuery 1.9.1 и, в частности, используется ajax beforeSend call. Насколько я могу судить, глядя на API jQuery ajax, я устанавливаю соответствующие значения в функции typeahead beforeSend.

Вот мой код и работает в jsfiddle http://jsfiddle.net/75mCa/2/

$('.autocomplete-es .typeahead').typeahead({
    name: 'es-tags',
    remote: {
        url: 'http://httpbin.org/post',
        beforeSend: function (jqXhr, settings) {

            console.log('type is initially : ' + settings.type);
            console.log('data is initially : ' + settings.data);

            settings.type = 'POST';
            settings.data = { fields: ['tags.tag'], query: { prefix: {  tag: 'emp' } } }
            //settings.contentType = 'application/json; charset=utf-8';

            console.log('type is now : ' + settings.type);
            console.log('data is now : ' + settings.data);

            //settings.processData = false;
            //settings.traditional = true;

            return true;
        },
        filter: function (data) {
            console.log(data.data);
            console.log(data.data.fields[0]);
            //do actual processing...for now just looking for this not to throw an error
        //    return data.hits.hits[0].fields.tags.tag;
        }
    }
});

Спасибо за любую помощь, G

1 ответ

Решение

У меня точно такой же вариант использования (объединение typehead.js с asticsearch), и я столкнулся с той же проблемой. Проблема заканчивается тем, что строка кода в jquery, которая проверяет, есть ли у вас данные формы для POST:

xhr.send( ( s.hasContent && s.data ) || null );

... и так просто идти вперед и установить s.hasContent=true в beforeSend и все работает.

Другие вопросы по тегам