【问题标题】:Ajax requests are aborted when they are sent too fast using the AjaxControlToolkit AutoCompleteExtenderAjax 请求在使用 AjaxControlToolkit AutoCompleteExtender 发送速度过快时中止
【发布时间】:2011-05-26 17:04:01
【问题描述】:

我在 asp.net ajax 站点上使用示例 AutoCompleteExtender 并且遇到了不受欢迎的行为。首先让我说来自 asp.net 站点的示例太慢了。 1 秒的 CompletionInterval 对我来说太长了。所以我将它降低到 300 毫秒,现在我收到了这些请求中止消息。 Firebug 向我展示了这一点:

POST @987654322@ 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>

【问题讨论】:

    标签: asp.net ajax ajaxcontroltoolkit autocompleteextender


    【解决方案1】:

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

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

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

    【讨论】:

    • 我支持这个假设,我遇到了同样的问题。 Fiddler 在 Body 上给出 -1,大约 30 秒到 1 分钟后响应来自 Web 服务器。
    猜你喜欢
    • 2015-06-23
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2020-02-15
    • 2015-06-25
    • 2011-12-20
    相关资源
    最近更新 更多