Javascript 即使api搜索查询返回值,typeahead.js autocomplete也不会显示任何建议
这是我的cshtml文件,我在脚本中使用typeahead加载并自动完成文本框,同时输入客户名称 我可以看到,在customer文本框中键入名称时,有一个对我的API的调用,但没有任何内容显示为下拉列表Javascript 即使api搜索查询返回值,typeahead.js autocomplete也不会显示任何建议,javascript,asp.net-mvc,razor,typeahead,Javascript,Asp.net Mvc,Razor,Typeahead,这是我的cshtml文件,我在脚本中使用typeahead加载并自动完成文本框,同时输入客户名称 我可以看到,在customer文本框中键入名称时,有一个对我的API的调用,但没有任何内容显示为下拉列表 <form> <div class="form-group"> <label>Customer</label> <input id="customer" type="text" value=""
<form>
<div class="form-group">
<label>Customer</label>
<input id="customer" type="text" value="" class="form-control" />
</div>
<div class="form-group">
<label>Movies</label>
<input type="text" value="" class="form-control" />
</div>
<button class="btn btn-primary">Submit</button>
</form>
@section scripts
{
<script>
$(document).ready(function () {
var customers = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/api/customers?query=%QUERY',
wildcard: '%QUERY'
}
});
customers.initialize();
$('#customer').typeahead({
minLength: 3,
highlight: true
},
{
name: 'customers',
display: 'name',
source: customers
});
});
</script>
}
这是我正在使用的typeahead js:
我的API返回值如下:
[
{
"id": 1016,
"name": "John",
"isSubscribeToNewsLetter": true,
"membershipType": {
"id": 4,
"signUpFee": 300,
"durationInMonths": 12,
"discountRate": 20,
"subscriptionType": "Yearly"
},
"membershipTypeId": 4,
"birthDate": "1990-10-18T00:00:00"
}
]
尝试将typeahead功能替换为以下内容:
$('#customer').typeahead({
minLength: 3,
highlight: true
},
{
name: 'customers',
displayKey: 'name',
source: customers.ttAdapter()
});
});
我已将“display”更改为“displayKey”,将customers更改为customers.ttAdapter()。
希望有帮助:)我发布的上述代码是正确的,但我的API中存在一个问题,这是整个问题的根本原因: 以前的API:
public IEnumerable<Customer> GetCustomers()
{
return _context.Customers.Include(c => c.MembershipType).ToList();
}
public IEnumerable GetCustomers()
{
return_context.Customers.Include(c=>c.MembershipType.ToList();
}
现行空气污染指数(运作良好):
公共IEnumerable GetCustomers(字符串查询=null)
{
var customersQuery=\u context.Customers
.包括(c=>c.MembershipType);
如果(!String.IsNullOrWhiteSpace(查询))
customersQuery=customersQuery.Where(c=>c.Name.Contains(query));
返回客户查询;
}
我尝试使用相同的函数,但仍然存在相同的问题。请帮助将api函数添加到问题中
public IEnumerable<Customer> GetCustomers()
{
return _context.Customers.Include(c => c.MembershipType).ToList();
}
public IEnumerable<Customer> GetCustomers(string query = null)
{
var customersQuery = _context.Customers
.Include(c => c.MembershipType);
if (!String.IsNullOrWhiteSpace(query))
customersQuery = customersQuery.Where(c => c.Name.Contains(query));
return customersQuery;
}