gpt4 book ai didi

javascript - typeahead.js 远程发送后数据问题

转载 作者:行者123 更新时间:2023-11-30 12:56:37 26 4
gpt4 key购买 nike

我已经将此发布到 typeahead github,但我想也许我可以在这里提问并找到答案。

我正在尝试使用远程查询作为我们的预输入数据源。为此,我想创建一个 POST 并将我的查询参数放入有效负载中。当我在 beforeSend 函数中将 settings.type 设置为 POST 时,它起作用了,但是当我设置 settings.data 时,我没有看到调试器中设置的数据,然后在我的示例中,我使用了一个简单的 http 服务,它返回您的payload,这也验证了数据没有被发送。在 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

最佳答案

我有这个完全相同的用例(将 typehead.js 与 elasticsearch 集成),并遇到了同样的问题。问题最终是 jquery 中检查您是否有要 POST 的表单数据的代码行是:

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

...所以只需继续并在 beforeSend 中设置 s.hasContent=true 一切正常。

关于javascript - typeahead.js 远程发送后数据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18874121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com