我需要在 Bloodhound 的远程属性中使用 jquery ajax 设置,因为我有一个只接受 POST 请求的服务器端页面。一切正常,但只有一次。对预先输入框中文本的任何后续更改都会调用过滤器函数,但不会触发新的服务器端请求以获取新数据。它只是过滤在第一个请求中获得的数据。当用户删除文本并输入其他内容时,我需要它发出新请求。
我是 typeahead 的新手,我花了太多时间试图弄清楚这一点。这是我的代码。
var users = new Bloodhound({
datumTokenizer: function (d) {
return Bloodhound.tokenizers.whitespace(d.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: 'fake.jsp',
filter: function (users) {
return $.map(users, function (user) {
return {
value: user.USER_ID,
name: user.DISPLAYNAME
};
});
},
ajax: {
type: 'POST',
data: {
param: function(){
return $('#userid').val();
}
},
context: this
}
}
});
users.initialize(true);
$('#userid').typeahead({
minLength: 3,
highlight: true
}, {
name: 'userslist',
displayKey: 'name',
source: users.ttAdapter()
});