我正在使用typeaheadjs,我希望音译搜索查询 - 之前 - 它被发送到服务器。
@Edvad Zagorski为此做了优秀的php数组:https://stackoverflow.com/a/6837302/377192
但我需要的是在beforeSend()方法中做同样的事情。因此,如果用户开始输入类似
的内容čikago
会发送
cikago
到服务器。
我尝试了无数的树枝技巧:json_encode,raw,url_encode ......没有用,因为我没有真正得到那些编码。
甚至可能吗?我想问题是beforeSend()方法收到urlEncodedQuery,而不是真正的。
答案 0 :(得分:0)
我有同样的问题。获取最新版本的Typeahead(本文发布时为0.10.1)。此版本集成了Bloodhound的使用,允许在提交之前对查询使用.replace()。
以下是Bloodhound文档: https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md#remote
答案 1 :(得分:0)
我在GitHub上提出的基于令牌化的解决方案:
var charMap = {'àáâããäå': 'a', 'èéêë': 'e', 'ç': 'c', 'ß': 'ss', /* ... */};
var normalize = function(str) {
$.each(charMap, function(chars, normalized) {
var regex = new RegExp('[' + chars + ']', 'gi');
str = str.replace(regex, normalized);
});
return normalized;
}
var queryTokenizer = function(q) {
var normalized = normalize(q);
return Bloodhound.tokenizers.whitespace(normalized);
};
var engine = new Bloodhound({
// ...
queryTokenizer: queryTokenizer
});