Autor Zpráva
kujeba
Profil
Dobrý den,
mám následující problém.
Při změně v selectboxu vykreslím pomocí ajaxu obsah stránky. Jenže pokud použiji selectbox vícekrát, začne se mi cyklit i ajax. Při druhém použití selectboxu se "align_galleryphoto.php" spustí dvakrát, při třetím použití čtyřikrát, atd...
Pouzivam knihovnu jQuery.

JS:
if($('.align_galleryphoto').length){
    $("#id_gallery").change(function(){
	var id_gallery = $('#id_gallery').val();
	var id_module = $('#id_module').val();
	var userid = $('#userid').val();
	var modulePath = $('#modulePath').val();
	var activeModulePath = $('#activeModulePath').val();
	var language = $('#id_language').val();
	var root = $('#root').val();
	var webmaker = $('#webmaker').val();

	$.post('../ajax/align_galleryphoto.php', {id_gallery: id_gallery,
					    id_module: id_module,
					    userid: userid,
					    modulePath: modulePath,
					    activeModulePath: activeModulePath,
					    language: language,
					    root: root,
					    webmaker: webmaker
					}, function(data){
	    if($('#ajax_align_galleryphoto').length){
		$('#ajax_align_galleryphoto').remove();
	    }
	    
	    if($('.newListSelected').length){
		$('.newListSelected').remove();
	    }

	    if($('.tip').length){
		$('.tip').remove();
	    }
	    
	    $('#container').append(data);
	});
    });

}
Kajman_
Profil *
A v čem voláte tento kód? Jen jednou při načtení stránky?
__construct
Profil
skús si nastaviť premennú, alebo HTML elementu class aktivny a pri volaní to kontroluj - a ak už je zavolaná vráť FALSE ..
kujeba
Profil
Kajman:
Jedná se o zobrazení fotek v galerii. Mám x galerií a v každé n fotografií. V selectu s id="id_gallery" si vybírám galerii, jejíž fotky chci zobrazit. Pri prvnim výběru se ajax spustí jednou, při druhém dvakrát, při třetím čtyřikrát, atd...

__construct:
Díky za radu, to by mohlo zabrat, zkusím a napíšu výsledek...
kujeba
Profil
__construct:
Tak tahle cesta nikam nevede. Já potřebuju, aby se to dalo zavolat znova a znova. Při každé změně hodnoty atributu "select" potřebuju spustit ajax, ktery mi vykresli fotky, patřící do vybrané galerie...
__construct
Profil
kujeba:
Pozri sa .. pri zavolaní funkcie sa skontroluje class aktivny a ak nie je pridá tlačidlu/odkazu (neviem cez čo to spúšťaš) class aktivny a pri dobehnutí XHR (success/error) ten class odstráni .. Toto fungovať musí ..
Chamurappi
Profil
Reaguji na kujebu:
Proč jsi neodpověděl Kajmanovi?
Podle symptomů to vypadá, že jsi podcenil přemoudřelost jQuery. Tamní AJAXová funkce bohužel (prasácky) evaluje i <script>y v AJAXem načteném HTML kódu a použitá funkce change přidává zpracování události, místo toho, aby přepisovala existující zpracování. Domnívám se, že zmíněný JS uvádíš i ve výstupu PHP skriptu align_galleryphoto.php — takže při prvním onchange se přidá druhý onchange, který spolu s tím prvním onchange zařídí, že při dalším onchange se přidají další dva onchange atd.
Jestli jsem se netrefil, tak prosím přestaň opakovat, v čem je problém, a dodej odkaz na živou ukázku.


Reaguji na __constructa:
Špatný přístup. Snažíš se odstranit důsledky místo hledání příčiny.
kujeba
Profil
Reaguji na Chamurappiho:
Ale já mu na jeho otázku
Kajman:
A v čem voláte tento kód? Jen jednou při načtení stránky?
přeci odpověděl?

Jinak jste to trefil, to je přesně ten zádrhel, díky za odhalení příčiny, teď již snad problém vyřeším. S jQuery dělam necelý rok, takže jsem stále začátečník a v podstatě při každém zadání, které řeším pomocí jQuery mne něčím překvapí.
_es
Profil
kujeba:
Ale já mu na jeho otázku
Kajman:
„A v čem voláte tento kód? Jen jednou při načtení stránky?“
přeci odpověděl?
Neodpovedal si na to, kde presne sa ten kód vlastne nachádza.

S jQuery dělam necelý rok
Na prácu s jQuery je nutné dostatočne ovládať aj syntax JavaScriptu, lebo syntakticky je jQuery len jedna definovaná funkcia.
Chamurappi
Profil
Reaguji na kujebu:
já mu na jeho otázku přeci odpověděl?
Neodpověděl jsi, v čem voláš ten kód. Odpověď „v samotné stránce i v kódu, který načítá AJAX“ by vše vysvětlila. Asi by tě i při jejím psaní trklo, v čem bude háček. Příště dávej rovnou odkaz na živou ukázku, abychom nemuseli tipovat.

při každém zadání, které řeším pomocí jQuery mne něčím překvapí
Kdybys ho nepoužíval, na tenhle problém bys nenarazil. Takhle musíš brát v úvahu nejen anomálie v prohlížečích, ale i anomálie v jQuery.
kujeba
Profil
Reaguji na Chamurappiho:
OT - „Kdybys ho nepoužíval, na tenhle problém bys nenarazil.
Jasne, kdybych umel strojovej kod, nemusel bych pouzivat skriptovaci jazyky... Jakej javascript framework tedy doporucujes, kdyz je jQuery spatnej?
__construct
Profil
kujeba:
Jasne, kdybych umel strojovej kod, nemusel bych pouzivat skriptovaci jazyky... Jakej javascript framework tedy doporucujes, kdyz je jQuery spatnej?
To s tým strojový kódom je nezmysel ..
Chamurappi Ti chcel pravdepodobne povedať, že používanie frameworku neodbúrava nutnosť znalosti daného jazyka a rôznych anomálií (nenazýval by som to anomáliami, ale skôr vlastnosťami, ale to je len môj názor) daného frameworku ..
Ak si chceš vybrať iný FW tak si pozri tento prehľad ..
Chamurappi
Profil
Reaguji na kujebu:
kdybych umel strojovej kod, nemusel bych pouzivat skriptovaci jazyky
Na webu musel.

Jakej javascript framework tedy doporucujes, kdyz je jQuery spatnej?
Sám obvykle užívám pár vlastních jednoduchých funkcí, které jsou v něčem podobné funkcím z frameworků, ale neschovávám si do nich nečekaná překvapení a netahám je vždy všechny všude jako kouli na noze. Neefektivní nesmysly, jako je vyhledávání všech elementů v celém dokumentu s určitou třídou jen kvůli tomu, abych zjistil, jestli je na stránce fotogalerie, nedělám.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0