我在 asp.net ajax 站点上使用示例AutoCompleteExtender并且遇到了不正常的行为。首先让我说来自 asp.net 站点的示例太慢了。1 秒的 CompletionInterval 对我来说太长了。所以我将它降低到 300 毫秒,现在我收到了这些请求中止消息。Firebug 向我展示了这个:
POST http://localhost:49539/AutoComplete.asmx/GetCompletionList Aborted
当请求中止时,它显然无法检索新列表,因此不会显示选项列表,这会导致用户体验不佳。如果我打字慢,那么请求会顺利通过,我会得到选项列表。似乎我需要完成每个请求才能为用户提供最佳体验,但请注意...
有谁知道我需要做什么才能始终在键入字母后 100-400 毫秒内弹出列表?
注意:看起来 IE 和 Chrome没有中止请求,因此我得到了更好的响应时间,并且列表立即弹出。这可能是侥幸,并且在另一台计算机上的工作方式有所不同 - 我不知道。
另请注意:我的 GetCompletionList() 函数非常基本,仅返回硬编码值(无 DB 请求),因此速度非常快。
这是aspx
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server" autocomplete="off"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
TargetControlID="TextBox1"
ServicePath="~/AutoComplete.asmx"
ServiceMethod="GetCompletionList"
MinimumPrefixLength="1"
CompletionInterval="200"
CompletionSetCount="12"
EnableCaching="true">
</ajaxToolkit:AutoCompleteExtender>
</ContentTemplate>
</asp:UpdatePanel>