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
+
0
-

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
+
0
-

nevidim, ze bys tam vkladal nette.ajax.js

DenOwq
Člen | 6
+
0
-

Zapomněl jsem, vkládám ho tam:

<script type="text/javascript" src="../js/nette.ajax.js"></script>
David Matějka
Moderator | 6445
+
0
-

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)

DenOwq
Člen | 6
+
0
-

Soubor to načte.
Nehází to chybu, to jsem zkontroloval jako první.

iguana007
Člen | 970
+
+1
-
  1. V developer konzoli – když se podíváš do záložky Network, tak tam ten požadevek po kliku vyskočí?
  2. Pokud ho tam vidíš a rozklikneš si ho, je tam u „Request headers“ uvedené: „X-Requested-With: XMLHttpRequest“?
  3. Nemáš náhodou ty snippety, které v té handle invaliduješ vložené uvnitř šablony, která se includuje?
  4. 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
+
0
-
  1. vyskočí tám jen ?do=reloadServers
  2. 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
  1. spíš se vůbeč nič neprovede, snippety to neupdatuje jen kvůli tomu, že ten požadavek není AJAX-ový
  2. 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
+
+1
-
  1. 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
  2. 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()
DenOwq
Člen | 6
+
0
-
  1. veškerý js jsem dal na konec stránky, nic se nezměnilo.
  2. zatím nebudu řešit :)
DenOwq
Člen | 6
+
0
-

Vyřešeno, jiné js zablokovalo další js(vůbec nechápu proč)

Merfinder
Člen | 35
+
0
-

Paráda :) zrovna jsem to taky řešil a pomohlo mi že jsi napsal že jiné js zablokovalo další js …teď to mám v pořadí jquery,nette.ajax,main a frčí to :)