Abl*_*lue 17 jquery typeahead typeahead.js twitter-typeahead
我似乎无法获得正确使用POST的远程查询.
var creditors = new Bloodhound({
datumTokenizer: function (d) {
return Bloodhound.tokenizers.whitespace(d.value)
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: "../getCreditors",
replace: function(url, query) {
return url + "#" + query;
},
ajax : {
type: "POST",
data: $.param({q: queryInput.val()})
}
}
});
Run Code Online (Sandbox Code Playgroud)
queryInput.val()只获取对象的当前值,而不是实例化bloodhound对象时的值.如何将查询字符串放入ajax数据选项中?
小智 16
你可以使用$ .ajax的beforeSend
var creditors = new Bloodhound({
datumTokenizer: function (d) {
return Bloodhound.tokenizers.whitespace(d.value)
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: "../getCreditors",
replace: function(url, query) {
return url + "#" + query;
},
ajax : {
beforeSend: function(jqXhr, settings){
settings.data = $.param({q: queryInput.val()})
},
type: "POST"
}
}
});
Run Code Online (Sandbox Code Playgroud)
Atr*_*opo 11
您可以使用该prepare属性,remote或者prefetch,请注意功能签名的更改.一个例子prefetch:
var Bloodhound = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: remote,
prepare: function (settings) {
settings.type = "POST";
settings.contentType = "application/json; charset=UTF-8";
return settings;
},
remote: function (query, settings) {
settings.type = "POST";
settings.data = {q: query, foo: 'bar'}; // you can pass some data if you need to
return settings;
}
}
});
Run Code Online (Sandbox Code Playgroud)
请记住,随着remote功能签名的变化function(query, settings).
供参考:github.com/twitter/typeahead.js/issues/1236
| 归档时间: |
|
| 查看次数: |
24371 次 |
| 最近记录: |