Jak zpracovat data vrácená AJAXem

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

Dobrý den, mám v šabloně tento JS:

<script>
   function odesliPozadavek(){
     	jQuery.get({link nejakyCallback!}, 20, function(){
     		/**/
	});
  }
</script>

Snippet, callback v presenteru, to všechno samozřejmě taky mám.
Vše mi funguje až po to, že po nějaké události se spustí funkce odesliPozadavek, provede se callback a vrátí se mi v pořádku JSON data – vidím ve Firebugu. A teď nevím, jak mám příchozí data zpracovat. Předpokládám, že nějaké načtení a aktualizaci snippetu v JS. Díval jsem se do jquery.nette.js, že bych z toho něco použil (taky fórum a net jsem se snažil prolízt), ale nejsem ještě z toho JS moc moudrej. Můžete prosím pomoci? Jak se stává, někdy se ve věcech patlám a když už pak sprsknu něco funkčního, tak si nadávám, jak to bylo přeci jasný :)

22
Člen | 1478
+
0
-

musíš data předat té funkci function(payload){} – pro data. Snipety – v presenteru musíš mít $this->invalidateControl(‚your snippet‘) a v šabloně {snippet …}nějaký html{/snippet}

Editoval 22 (23. 5. 2011 11:17)

Gruid
Člen | 25
+
0
-

Jasně, invalidaci mám a snippet taky, Když se odkážu normálně linkem <a href="{link nejakyCallback!}" class="ajax">zavolej</a>, všechno funguje. Šlo mi o ten javascript, jak předat data, nějak jsem z toho nebyl moudrej – mno jsem vobyčejnej začátečník. Dopracoval jsem se k tomuhle. Je to funkční, ale nevím, jestli je to košér?

<script>
   function updateSnippet(id, html)
  	{
  		$('#' + id).html(html);
  	}

   function odesliPozadavek(){

     jQuery.get({link nejakyCallback!}, 20, function(payload){
                // přesměrování
                if (payload.redirect) {
                        window.location.href = payload.redirect;
                }

                // snippety
                if (payload.snippets) {
                        for (var i in payload.snippets) {
                                updateSnippet(i, payload.snippets[i]);
                        }
                }
        });
  }
</script>
22
Člen | 1478
+
0
-

a proč nepoužiješ přímo jquery.nette.js z doplňků? Stačí akorát nalinkovat a navěsit na element.

Gruid
Člen | 25
+
0
-

Navěsit na odkaz, nebo nějaký prvek, to mi šlo, ale chtěl jsem si udělat JS funkci, která se sama zavolá třeba každých 20s a obnoví část stránky. Ale už se mi to v hlavě urovnalo. Nevim, co jsem v tom hledal za složitosti. Hlavně jsem došel k tomu, že vlastně stačí jen něco jako:

<script>
function mojeAktualiyace(){
    $.get({link mujCallback!});
}
</script>

Jako vždycky, teď už se jen směju, jak je to jednoduchý :) Mno a taky jsem asi měl původně chybu v presenteru a proto jsem se v tom tak zamotal. Dík za nasměrování.

Editoval Gruid (23. 5. 2011 14:30)