Aszinkron kérés leállítása

Mint bármely HTTP kérésnél, AJAX esetén is előfordulhat, hogy a válasz lassan érkezik meg a szervertől. A felhasználó türelmetlen lesz, de nem tudja, mihez nyúljon. Mivel a böngésző Stop gombját feleslegesen nyomogatja, a webfejlesztő feladata marad, hogy az AJAX-os kérés leállítására lehetőséget adjon.

Szerencsére erre van támogatás az ASP.NET AJAX-ban: a kliens oldali Sys.WebForms.PageRequestManager osztály abortPostBack() metódusát kell meghívnunk. Egy UpdateProgress vezérlőnk biztosan lesz, hiszen a felhasználót tájékoztatjuk (ugye!?), hogy valami történik a háttérben. Tegyünk rá egy kliens oldali gombot, amely egy saját JavaScript függvényt hív:

    <asp:UpdateProgress runat="server" 
        AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="0">
        <ProgressTemplate>
            Frissítés folyamatban, türelem...
            <input type="button" value="Mégsem" onclick="cancelRequest()" />
        </ProgressTemplate>
    </asp:UpdateProgress>

A függvényt akár az oldal head részében is implementálhatjuk, annyira általános:

    <script language="javascript" type="text/javascript">
        function cancelRequest() 
        {
            var mgr = Sys.WebForms.PageRequestManager.getInstance();
            if( mgr.get_isInAsyncPostBack() ) 
            {
                mgr.abortPostBack();
            }
        }
    </script>

Ennyi az egész, lehet kopipésztelni minden oldalra, legyen boldog vele a felhasználó.

A cikkhez tartozó forráskód letölthető innen.

 

One thought on “Aszinkron kérés leállítása

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s