Ajaxové volání funkce z presenteru

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

Zdravím,

je možné z presenteru zavolat ajaxově jinou funkci?

Chci aby při neajaxovém spuštění funkce A, se zavolala funkce B ajaxově

lze toho nějak docílit? Zajímá mě jen to ajaxové volání.

Felix
Nette Core | 1247
+
0
-

Pokud mas vice handleru, tak samozrejme muzes volat vice naraz.

public function handleA(){
	// Some magic..
	$this->redrawControl('a');
}

public function handleB(){
	// Some magic..
	$this->redrawControl('b');
}

public function handleAb(){
	// Some magic
	$this->handleA();
	$this->handleB();
}

Pripadne idealne tu manipulaci odstinit do jinych privatnich metod a pak to muzes volat z jednotlivych handleru dle libosti.

vaclav147
Člen | 7
+
0
-

Já bych potřeboval toto:

	public function renderDefault(){
		// pri spusteni teto metody potrebuju aby se na pozadi provedla metoda handleA ajaxove
		handleA(); // kdyz volam takto tak se ajaxove neprovede, volam to spravne a mam chybu jinde? 	nebo se to řeší jinak
	}

	public function handleA(){

	}
David Matějka
Moderator | 6445
+
0
-

Na serveru nemuzes vyvolat ajaxovy pozadavek. A chybeji ti zaklady PHP, handleA vola klasickou funkci, kdyz chces volat metodu na objektu, musis $this->handleA().

Co konkretne potrebujes?

Editoval matej21 (25. 6. 2014 13:15)

vaclav147
Člen | 7
+
+1
-

Chci aby když přejdu na hlavní stránku default, se spustil na pozadí skript, o kterém uživatel nebude vědět.

Skript odesílá data na jiný web a to nesmí jít vidět.

Jan Suchánek
Člen | 404
+
0
-

Tak to musíš zajistit pomocí jquery např. s doplňkem nette.ajax.js

<script>
$(function(){

	$.nette.ext('example-load', {
		load: function (rh) {
		    $.nette.ajax('example-url'); // Todo
		    // Pokud přidáváš javascript k konkrétní šabloně latte, můžeš místo url používat {plink}
		},
	});


});
</script>

Rozhodně v presenteru nemůžeš řešit co se bude tahat na pozadí ajaxem po vykreslení stránky, to prostě musíš napsat, naprogramovat sám.

Editoval jenicek (25. 6. 2014 13:58)

David Matějka
Moderator | 6445
+
0
-

Pokud nechces, aby uzivatel ten pozadavek videl, pak to neni ajaxovy pozadavek. Proste posli treba pomoci curl-u http request na onen vzdaleny server.