Я уже разместил это на gitub typeahead, но я подумал, что, возможно, могу попросить здесь и найти ответ.typeahead.js remote beforesend post data issue
Я пытаюсь использовать удаленный запрос как наш источник данных для typeahead. Для этого я хотел бы создать POST и поместить мои параметры запроса в полезную нагрузку. Когда я устанавливаю параметр settings.type в POST в функции beforeSend, он работает, но когда я устанавливаю параметры settings.data, я не вижу данные, заданные в моих отладчиках, а затем в моем примере я использую простой сервис http, который возвращает ваш полезная нагрузка, и это также проверяет, что данные не отправляются. Под typeahead.js используется jQuery 1.9.1 и, в частности, с использованием его ajax beforeSend. Насколько я могу судить о jQuery ajax api, я устанавливаю соответствующие значения в функции 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
Возможно ли, что после создания 'jqXhr' не может измениться с' GET' на 'POST'? Если это так, почему бы просто не передать запрос в запрос «GET» и использовать «replace» для создания своего URL-адреса? –
@NitzanShaked, запрос отправляется как POST, так что это не так. Хотя, возможно, это случай, когда полезная нагрузка не может быть изменена? И снова из примеров, которые я видел, должно быть. Также проверка моих изменений с помощью .ajaxSend(), похоже, подтверждает, что все настроено так, как я надеялся. Таким образом, между этой точкой и когда вызов построен и выполняется, я теряю полезную нагрузку. О, и, к сожалению, GET с параметрами url недостаточен для моего использования. –
Я думаю, что это именно так: вы можете изменить GET на POST, но вы не можете изменить данные. По крайней мере, это не сработало для меня, и это не очевидно из документов, которые вы можете. Почему GET недостаточно хорош? –