Zamrzání ajaxu při více požadavků v jeden čas
- Alsatian
- Člen | 175
Ahoj. Zamiloval jsem si ajax, mám ale následující problém, se kterým si zatím nevím rady.
Mám například upload obrázků, do kterého ajaxově přidávám další
nebo je hromadně mažu.
Jednoduché, volám handler, ten něco provede a poté překreslím požadovaný
snippet.
Používám ještě jedno ajaxové volání na pozadí webu a to na kontrolu nových zpráv, takové notifikace. Nevím, například že přišla nová faktura, cokoli.
Zjistil jsem, že pokud probíhá ajax požadavek, třeba zmíněný upload obrázků, déle a do toho se provede jiný ajax požadavek, tedy kontrola nových notifikací, snippet už s dokončením uploadování (třeba) se mi nepřekreslí. Jakmile se tedy potkají dva ajax požadavky, což se normálně neděje, tak ten první už zřejmě nepřekreslí snippet. Pokud ručně refrešnu stránku, vidím, že se soubory nahrály.
Netuší někdo jak na to? :)
- Alsatian
- Člen | 175
@CZechBoY , prosím tě, na zjišťování nových notifikací mám
v javascriptu následující kód. V něm je spinnerOff: true – což
nefunguje a spinner se při každém spuštění zobrazí. Tedy pokaždé, když
na pozadí JS testuje přítomnost nových zpráv.
Spinner se mi jinak na ostatní akce líbí, chtěl bych jej zachovat.
Používám extension: spinner.ajax.js
$(document).ready(function() {
function f_cmsTimer() {
// oznameni v horni admin liste
$.nette.ajax({
url: '?do=cmsAlertCheck',
dataType: 'json',
spinnerOff: true,
}).done(function(data) {
//... zobrazení notifikace ...
});
var cmsTimer = window.setTimeout(function () {f_cmsTimer();}, 20000); // opet spustime
}
$(document).ready(function() {
f_cmsTimer(); // prvni spusteni
});
});
Možná na to jdu úplně špatně, nevím.
Editoval Alsatian (2. 2. 2019 14:39)
- Alsatian
- Člen | 175
Nakonec jsem vybojoval :)
Pozměnil jsem soubor spinner.ajax.js, ve kterém testuji, jestli se má spinner spustit pomocí „spinnerOff“
start: function (xhr, settings, e) {
this.counter++;
//if (this.counter === 1) {
if (this.counter === 1 && !settings.spinnerOff) {
this.spinner.show(this.speed);
}
},