de-vraag
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
 lukewm
lukewm
Question

Prerušenie požiadaviek Ajax pomocou jQuery

Ako môžem pomocou jQuery zrušiť/prerušiť požiadavku Ajax, na ktorú som ešte nedostal odpoveď?

1769 2009-01-15T12:45:18+00:00 3
Benjamin Gruenbaum
Benjamin Gruenbaum
Edited question 3 júl 2014 в 1:31
Programovanie
javascript
jquery
ajax
This question has 1 odpoveď in English, to read them log in to your account.
Solution / Answer
 meouw
meouw
15 január 2009 в 12:56
2009-01-15T12:56:49+00:00
Viac na
Zdroj
Upraviť
#8748618

Väčšina metód jQuery Ajax vracia objekt XMLHttpRequest (alebo jeho ekvivalent), takže stačí použiť abort().

Pozri dokumentáciu:

  • abort Method (MSDN). Zruší aktuálnu požiadavku HTTP.
  • abort() (MDN). Ak už bola požiadavka odoslaná, táto metóda zruší požiadavku.
var xhr = $.ajax({
    type: "POST",
    url: "some.php",
    data: "name=John&location=Boston",
    success: function(msg){
       alert( "Data Saved: " + msg );
    }
});

//kill the request
xhr.abort()

UPDATE: Od verzie jQuery 1.5 je vrátený objekt obalom pre natívny objekt XMLHttpRequest s názvom jqXHR. Zdá sa, že tento objekt zobrazuje všetky natívne vlastnosti a metódy, takže vyššie uvedený príklad stále funguje. Pozri Objekt jqXHR (dokumentácia jQuery API).

DOPLNENIE 2: Od verzie jQuery 3 metóda ajax teraz vracia sľub s ďalšími metódami (napríklad abort), takže vyššie uvedený kód stále funguje, hoci vrátený objekt už nie je xhr. Pozri blog 3.0 tu.

DOPLNENIE 3: xhr.abort() stále funguje na jQuery 3.x. Nepredpokladajte, že aktualizácia 2 je správna. [Viac informácií na repozitári jQuery Github] [https://github.com/jquery/jquery/issues/2084#issuecomment-308173243].

Marcos  Pérez Gude
Marcos Pérez Gude
Edited answer 14 júl 2018 в 10:53
1699
0
 tvanfosson
tvanfosson
15 január 2009 в 12:55
2009-01-15T12:55:31+00:00
Viac na
Zdroj
Upraviť
#8748616

Požiadavku nemôžete odvolať, ale môžete nastaviť hodnotu časového limitu, po ktorej bude odpoveď ignorovaná. Možnosti jquery AJAX nájdete na tejto stránke. Domnievam sa, že vaše spätné volanie chyby sa zavolá, ak sa prekročí časový limit. Pri každej požiadavke AJAX už existuje predvolený časový limit.

Môžete tiež použiť metódu abort() na objekte požiadavky, ale hoci to spôsobí, že klient prestane počúvať udalosť, pravdepodobne to may nezastaví server pred jej spracovaním.

 tvanfosson
tvanfosson
Edited answer 3 júl 2012 в 12:28
jQuery.ajax() | jQuery API Documentation
docs.jquery.com
111
0
Yuval Adam
Yuval Adam
15 január 2009 в 12:56
2009-01-15T12:56:22+00:00
Viac na
Zdroj
Upraviť
#8748617

Je to asynchrónna požiadavka, čo znamená, že keď sa raz odošle, je vonku.

V prípade, že váš server začína veľmi nákladnú operáciu kvôli požiadavke AJAX, najlepšie, čo môžete urobiť, je otvoriť server na počúvanie požiadaviek na zrušenie a poslať samostatnú požiadavku AJAX, ktorá oznámi serveru, aby zastavil to, čo robí.

V opačnom prípade jednoducho ignorujte odpoveď AJAX.

72
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
mohidil qodirova
Registered pred 5 hodinami
2
Jasur Fozilov
Registered pred 18 hodinami
3
Zuxriddin Muydinov
Registered pred dňom
4
Денис Анненский
Registered pred 3 dňami
5
365
Registered pred týždňom
BG
DE
EL
ES
FR
ID
IT
JA
NL
PT
RU
SK
ZH
© de-vraag 2022
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora