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
и все работает.