Ajax jak správně postupovat

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
radvis
Začátečník | 110
+
0
-

Ahoj, snažil jsem se udělat jednoduchou stránku kde bude form a pod ním se budou vypisovat texty bez reloadu. Použil jsem proto guestbook, co bylo napsané v nette a pokusil jsem se to „zajaxovat“ (aby se bez reloadu vypsal text všem po určitém intervalu) a povedlo se, můj dotaz je ten, zda je to dobře řešené nebo je to špatně (chtěl bych z toho udělat nějakej jednoduchej chat) a zda to bude dělat problémy při věčí zátěži.

//layout
<body onload="reload()">

<script>
function reload(){
	$.get('?do=test');
	setTimeout("reload()", 2000);
}
</script>

//presenter
public function handleTest(){

 if ($this->isAjax()){
  $this->invalidateControl('list');
 }

 }
Lopata
Člen | 139
+
0
-

Při zátěži to problém mít bude (jen při opravdu velké). Jestli ti to hodně leží v žaludku, tak zde máš anglický zdroj.

Jako argument té metody get nedávej string, ale standartní makro link.

S jQuery žádné onload na body nedáváš. Použij

<script>
$(document).ready(function () {
	// kód
});
// nebo zkráceně
$(function () {
	// kód
});
</script>

Takhle se opakovaná událost nenastavuje. Vygoogli si javascript setInterval.

A přečti si návod na zapisování kódu zde na fóru.

radvis
Začátečník | 110
+
0
-

No, já si zvládnu udělat jednoduchý chat v ajaxu, ale nedokážu to dát do struktury MVC :/. Nevím jak třeba data z presenteru předat (buď „jsonem“ nebo xml) do šablony :-X.

Lopata
Člen | 139
+
0
-

JSONem. Je to vysvětleno v seriálu na zdrojáku.

Editoval Lopata (8. 8. 2010 0:28)

radvis
Začátečník | 110
+
0
-

No, tam jsem to četl, ale nějak mi to nešlo. Jak bych jednoduše vypsal třeba z presenteru „ahoj“ v alertu? Myslím, že tam bylo něco ve smyslu „$this->payload->pozdrav = "ahoj“;" ?

Lopata
Člen | 139
+
0
-

Sám bych to nenapsal líp, než je na zdrojáku. Pokud jsi to z nějakého důvodu nepochopil, zkus si to ještě párkrát přečíst. Pokud se ani tak nezadaří, pokus se nějak vystihnout, co konkrétně nechápeš.

radvis
Začátečník | 110
+
0
-

Ok, zítra na to mrknu, díky.

Patrik Votoček
Člen | 2221
+
0
-

@Lopata: necituj prosím zbytečně celý předchozí post… (pokdu na něj neodpovídáš po částech)

Lopata
Člen | 139
+
0
-

Jo, to bylo zbytečné … polepším se… :-P