2

我在 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>
4

1 回答 1

0

由于几个星期以来没有人回答我的问题,我会试一试。

我不是 100% 确定这是我的问题,但我倾向于认为这是由 Visual Studio 附带的 Web 服务器引起的。 我在另一个项目中遇到了类似的问题,但它托管在本地 IIS 服务器上(更改 web 选项卡下的项目属性)并且请求没有中止。

我不确定 100% 的原因是该项目使用了一个 jquery 库,该库在使用内置 Web 服务器的 Visual Studio 时会收到中止请求,但在使用本地 IIS 服务器时并非如此。

于 2011-01-18T23:40:12.127 回答