problém s nette.ajax.js – odesílání více požadavků, než je třeba

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
nedik
Člen | 9
+
0
-

Zdravím,
mám takový problém s tímto kodem v javascriptu:

$.nette.init(function (netteAjaxHandler) {
$(‚a.ajax‘).live(‚click‘, netteAjaxHandler);
 });

Když pak na jakýkoliv a href prvek dám class=„ajax“, tak se sice ajax v pořádku provede, nicméně když kliknu na to podruhé, tak se zobrazí již dva stejné požadavky. A když klikám stále více, tak se pomalu požadavky stupňují. (sice v nette ajax je funkce, která dovolí odeslat pouze jeden požadavek, ostatní abortuje, ale i tak se mi nezdá dobré, že při 10-tém kliknutí se mi 9 požadavků abortne a ten jeden se teda provede)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Mám jediný dotaz, proč přepisuješ defaultní ajaxizaci? live() je ugly a deprecated.

Jinak k zodpovězení dotazu, je to kvůli tomu, že po každém úspěšně doběhnutém požadavku se znovu zavolá ten callback. Aby ti to fungovalo, vypni extenzi load:

$.nette.ext('load', false);
nedik
Člen | 9
+
0
-

Ok, díky. S tím vypnutým Loadem to funguje.
Mimochodem, mám to tam proto, že to bez toho nefunguje. I když mám správně na anchoru class AJAX, tak se mi to prostě ajaxem neodeslalo.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

To je divné, stálo by to za prozkoumání, protože obvykle s tím problém není. Použití live() se nedoporučuje především z výkonnostních důvodů.

wb2009
Člen | 125
+
0
-

Mám stejný problém, ale v google chrome. V IE nebo firefoxu se to odesílá jednou. V google chrome se to stupňuje…?

$.nette.ext(‚load‘, false);

To bohužel nepomáhá…

wb2009
Člen | 125
+
0
-

A již jsem na to asi přišel… Bylo to tím, že jsem form odesílal přes $(this).submit() namísto $(this).closest(‚form‘).submit(). IE s Firefoxem to odesílali jednou, chrome vicekrat..