我是Typeahead的新手,无法使用回调。对不起,如果已经询问过,我搜索时找不到确切的问题。
如果记录只是来自带有字符串的变量,而不是来自数据库的记录,那么我有Typeahead工作。我不确定如何正确编码回调。
我们正在使用MVC 6,看起来像是typeahead.js 0.11.1。
工作原理:
var records = [ "Alabama", "Alaska", "Arizona" . . .];
var substringMatcher1 = function (records) {
return function findMatches(searchString, callback) {
var matches, substringRegex;
matches = [];
substrRegex = new RegExp(searchString, 'i');
$.each(records, function (index, record) {
if (substrRegex.test(record)) {
matches.push(record);
}
});
callback(matches);
};
};
$('#field1').typeahead({
hint: true,
highlight: true,
minLength: 3
},
{
name: 'records',
source: substringMatcher1(records)
});
什么不工作:
var substringMatcher2 = function (records) {
return function findMatches(searchString, callback) {
$.ajax({
url: "/Test/GetRecords/",
cache: false,
data: { searchString: searchString },
type: "POST",
success: function (data) {
callback(data);
},
error: function (reponse) {
alert("error : " + reponse);
}
});
};
};
$('#field2').typeahead({
hint: true,
highlight: true,
minLength: 3
},
{
name: 'records2',
source: substringMatcher2()
});
Test / GetRecords根据searchString正确返回过滤后的记录(字符串列表),但页面上没有显示任何内容。我调试了并正确填充了数据。 (data = [New Jersey,New York,...],当searchString为“new”时)
我错过了什么?这种情况是否可行?
任何帮助将不胜感激。
提前致谢!
答案 0 :(得分:2)
这是更新的代码,使它适用于我,以防它帮助其他人:
var substringMatcher2 = function (records) {
return function findMatches(searchString, processSync, processAsync) {
$.ajax({
url: "/Test/GetRecords/",
cache: false,
data: { searchString: searchString },
type: "POST",
success: function (data) {
processAsync(data);
},
error: function (reponse) {
alert("error : " + reponse);
}
});
};
};