Javascript 即使api搜索查询返回值,typeahead.js autocomplete也不会显示任何建议

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=""

这是我的cshtml文件,我在脚本中使用typeahead加载并自动完成文本框,同时输入客户名称

我可以看到,在customer文本框中键入名称时,有一个对我的API的调用,但没有任何内容显示为下拉列表

    <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;
    }