使用AjaxControlToolkit AutoCompleteExtender将Ajax请求发送得太快时会中止Ajax请求

时间:2010-12-16 17:43:01

标签: asp.net ajax ajaxcontroltoolkit autocompleteextender

我正在使用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>

1 个答案:

答案 0 :(得分:0)

由于现在几周没有人回答我的问题,我会试一试。

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

我不能100%肯定的原因是该项目使用了一个jquery库,当使用Web服务器内置的visual studio时,它正在获取中止请求,但在使用本地IIS服务器时却不是这样。