Jak zavolat signál s parametry javascriptem
- H0w4rd
- Člen | 96
Potřebuju ajaxově překreslit jeden snippet a k tomu je nutné zavolat handle s parametry, přičemž hodnoty mám v javascriptových proměnných.
public function handleGetUserInfo($userId, $from, $to)
{
$this->template->userInfo = $this->userRepository->getUserInfo($userId, $from, $to);
$this->redrawControl("userInfo");
}
{snippet userInfo}
{foreach $userInfo as $i}
...
{/foreach}
{/snippet}
Jak to udělat?
Dřív jsem to dělal třeba tak, že jsem si připravil neviditelný odkaz:
<a n:href="getUserInfo!" class="ajax dn"></a>
a javascriptem jsem mu přidal do href parametry a pak javascriptem na ten odkaz kliknul. Ale to už teď nejde – stane se to, že se celá stránka znova načte místo toho, aby se to udělalo ajaxově.
Když si celý odkaz připravím i s parametry, tak ajax funguje:
<a n:href="getUserInfo! userId => 1, from => '2015-01-01', to => '2015-02-02'" class="ajax dn"></a>
jenže já potřebuju ty parametry plnit javascriptem.
Nedokázal jsem to zjistit z dokumentace a ani na fóru jsem to nenašel.
- jiri.pudil
- Nette Blogger | 1032
Pošli si ten ajaxový request ručně:
$.nette.ajax({
url: {link getUserInfo!},
data: {
userId: userId,
from: from,
to: to
}
});
- H0w4rd
- Člen | 96
Přišel jsem na způsob, jak to udělat, ale také to nebude moc čisté řešení :)
Vytvořil jsem si formulář s třídou ajax přes {control userInfo} a metodu createComponentUserInfo(), který obsahuje 3 hidden políčka.
Tato 3 hidden políčka naplní javascript a formulář odešle.
V onSuccess[] metodě je
<?php
$this->template->userInfo = $this->userRepository->getUserInfo($userId, $from, $to);
$this->redrawControl("userInfo");
?>
a snippet se mi překreslí. Doufám, že mi to časem zase nepřestane fungovat podobně jako mi už nefunguje náhrada parametrů v hrefu u skrytého odkazu.
Přece to ale musí jít řešit nějak lépe, nebo ne?
Editoval H0w4rd (1. 4. 2015 22:24)