Ajax neodesílá požadavky správně
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- DenOwq
- Člen | 6
Ahoj,
jednoduše mi nejde odeslat ajaxový požadavek přes signály a zpět – tedy
se stránka refreshne a nic se neprovede kódy:
public function handleReloadServers()
{
if($this->isAjax()){
if (!$this->rankmanager->isBigger("PLAYER"))
$this->template->servers = $this->servers->getAllBy("hide", false);
else
$this->template->servers = $this->servers->getAll();
if($this->hasFlashSession()){
$this->getFlashSession()->remove();
}
$this->flashMessage("Servery byly načteny", "info", "refresh");
$this->redrawControl("flash");
$this->redrawControl("servers");
}
}
snippety mám normálně v kódu, nemyslím si že je problém přímo v nich.
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script type="text/javascript">
$(function () {
$.nette.init();
});
</script>
<a href="{$control->link("reloadServers!")}" class="ajax"><i class="fa fa-refresh"></i></a>
- David Matějka
- Moderator | 6445
to relativni odkazovani pres ../
se mi nelibi. proc to
tam mas?
koukni do developer konzole, jestli to nehlasi chybu (F12 a zalozky Console a pripadne Network)
- iguana007
- Člen | 970
- V developer konzoli – když se podíváš do záložky Network, tak tam ten požadevek po kliku vyskočí?
- Pokud ho tam vidíš a rozklikneš si ho, je tam u „Request headers“ uvedené: „X-Requested-With: XMLHttpRequest“?
- Nemáš náhodou ty snippety, které v té handle invaliduješ vložené uvnitř šablony, která se includuje?
- Nepřebíjíš data předáváná uvnitř handle metody do template nečím v render metodě?
Editoval iguana007 (29. 1. 2016 16:22)
- DenOwq
- Člen | 6
- vyskočí tám jen ?do=reloadServers
- u toho je:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:cs-CZ,cs;q=0.8,en;q=0.6
Connection:keep-alive
Cookie:_ga=GA1.2.1739802091.1454010440; PHPSESSID=3a9mguh4ijocpvt6b86emmbjc7; nette-browser=d0zppt9apj
Host:web
Referer:http://web/server/?do=reloadServers
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36
- spíš se vůbeč nič neprovede, snippety to neupdatuje jen kvůli tomu, že ten požadavek není AJAX-ový
- render metoda:
if (!$this->rankmanager->isBigger("PLAYER"))
$this->template->servers = $this->servers->getAllBy("hide", false);
else
$this->template->servers = $this->servers->getAll();
Editoval DenOwq (29. 1. 2016 16:45)
- iguana007
- Člen | 970
- pokud ti tam ta hlavicka chybi, tak se ti nesplni podminka v handle $this->isAjax ;) Sice mas nette ajax init obaleny na dom ready, ale zkus veskery javascript nacpat az na konec te HTML stranky, tj. az za ten ajax odkaz
- myslim si, ze v te handle tento kod muzes vymazat, protoze az ti to zacne fungovat, tak se ti to imho vykona 2×, leda, ze by si tento kus kódu v render metode obalil negací isAjax()