jak rozchodit ajax strankovani

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

ahoj,
rad bych se zeptal: snazim se podle tutorialu https://pla.nette.org/…ivajici-ajax na svym vlastnim trosku odlisnym projektu a porad mi to nejak nefunguje. Bylo potreba nektery veci udelat jinak, ptz ten tut je pro stary nette a proto bych se rad zeptal jestli delam vsechno spravne:

  • nejprve sem si zkopiroval /js/jquery.nette.js , /js/jquery.ajaxform.js do www/js (a jeste vytvoril podle tutorialu ajax.js). Samozrejme sem je prolinkoval s @layout.latte
  • pak sem do base presenteru do metody render pridal
<? php
	if ($this->isAjax()){
            $this->invalidateControl('list');
        }
?>
  • a nakonec sem kolem bloku kt mi vykresluje prispevky, a mam tam i strankovani, umistil {snippet list}{/snipet}

Je potreba udelat jeste neco? Nekde neco prepsat nebo tak? Diky moc za kazdou radu. S nette sem zacatecnik a ajax celkove skoro vubec nechapu.

(Nette Framework 2.0.13)

Editoval DanielWellington (2. 1. 2014 23:47)

Jan Suchánek
Člen | 404
+
0
-

@DanielWellington: Dal si všem odkazům třídu?

class="ajax"

Na formátování php v příspěvcích používej /--php \--, lépe se čtou.

Editoval jenicek (2. 1. 2014 23:18)

DanielWellington
Člen | 17
+
0
-

No puvodne sem to tam nemel, ptz vykresluju ten paginator pomoci {control paginator} a nedoslo mi to. Ted sem si to nasel VisualPaginator/template.phtml a pridal vsem udkazum tu tridu o ktere mluvit, ale stale to nefunguje.

David Matějka
Moderator | 6445
+
0
-

muzes specifikovat „nefunguje“? provede se ajax request? provede se normalni request?

pomuzou ti developer tools, v chrome pod „F12“ a prepni si na kartu „Network“, jestli se ti vytvareji pozadavky apod, pripadne chyby jsou pak v karte „Console“

Pavel Macháň
Člen | 282
+
0
-

DanielWellington napsal(a):

ahoj,
rad bych se zeptal: snazim se podle tutorialu https://pla.nette.org/…ivajici-ajax na svym vlastnim trosku odlisnym projektu a porad mi to nejak nefunguje. Bylo potreba nektery veci udelat jinak, ptz ten tut je pro stary nette a proto bych se rad zeptal jestli delam vsechno spravne:

  • nejprve sem si zkopiroval /js/jquery.nette.js , /js/jquery.ajaxform.js do www/js (a jeste vytvoril podle tutorialu ajax.js). Samozrejme sem je prolinkoval s @layout.latte
  • pak sem do base presenteru do metody render pridal
<? php
	if ($this->isAjax()){
            $this->invalidateControl('list');
        }
?>
  • a nakonec sem kolem bloku kt mi vykresluje prispevky, a mam tam i strankovani, umistil {snippet list}{/snipet}

Je potreba udelat jeste neco? Nekde neco prepsat nebo tak? Diky moc za kazdou radu. S nette sem zacatecnik a ajax celkove skoro vubec nechapu.

(Nette Framework 2.0.13)

Koukni jestli máš dobře nalinkované Jsko. Btw hoď sem kousek té šablony a časti kde voláš invalidateControl … takhle můžeme jen hádat

DanielWellington
Člen | 17
+
0
-

matej21:
super! Presne tohle sem potreboval. Nevedel sem prave jak si kontrolovat funkcnost toho javascriptu… Ok, tak to bych mel asi vyladeny. Pouzival sem tam nekolik deprecated funkci. Tak sem to opravil a aktualne resim tenhle problem:

mam strankovani 1,2,{3},4,5,6. //jakoze sem na strance 3
Pokud si v tuhle chvili kliknu na next, prev nebo jakoukoliv jinou stranku, tak me to tam bez nacitani hodi = funguje tak jak sem chtel. Pokud ale z tyhle stranky chci jit na nejakou dalsi, tak uz se to zase nacita. Na dalsi me to zase hodi bez nacitani, a pak se to zase nacita. Tak se to strida.

Mam teorii, ze ten ajax se pusti pri nacteni stranky, jakmile se ale dostanu na dalsi, tak uz se znovu nepusti a proto je potreba to znovu nacist.

Predpokladam, ze takhle jen z popisu se to asi bude tezko resit, ale presto se zeptam jestli nekdo nema napad co by s tim mohlo byt? Nebo jestli se to takhle ma normalne chovat? fakt nevim…

Editoval DanielWellington (3. 1. 2014 0:36)

thunderbuff
Člen | 164
+
0
-

To je tím, že na elementy načtené javascriptem se nenabinduje javascript, co by je obsluhoval.

zkus nahradit javascrpt obsluhující a.ajax tímto:

<script>
		$('body').on("click", 'a.ajax', function(event) {
			event.preventDefault();
			$.get(this.href);
		});
</script>