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%わかりませんが、VisualStudioに付属しているWebサーバーが原因であると考えがちです。 別のプロジェクトでも同様の問題が発生しましたが、ローカルIISサーバーでホストされ([Web]タブでプロジェクトのプロパティを変更)、要求が中止されませんでした。

100%確信が持てない理由は、プロジェクトがWebサーバーに組み込まれたVisual Studioを使用しているときに中止要求を受け取っていたjqueryライブラリを使用していたが、ローカルIISサーバーを使用している場合はそうではなかったためです。

于 2011-01-18T23:40:12.127 に答える