Redirect přes AJAX – bez window.location.href

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

Zdravím, mohl by mi někdo poradit, potřebuju udělat redierct přes ajax.
Abych byl trochu konkrétnější…

Když zavolám this->redirect při ajaxovém požadavku, pošle se v payloadu řetězec, kam se má stránka redirectnout a v implementaci nette.ajax.js (tento addon ) je window.location.href=…

Nešlo by nějak, aby ten redirect vyvolal ajaxový požadavek? aby se nenačítala celá stránka ale zase jen potřebné snippety?

Díky za každý návrh.

newPOPE
Člen | 648
+
0
-

Na to by si asi potreboval viac Javascriptu ako je v nette.ajax…

Zrejme nejaké spojenie Nette a Js frameworku čo nie je nič simple keďže sa tomuto problému venujem už dlhšie a momentálne som len v stave kedy Nette vystupuje ako REST backend.
Konkrétne AngularJS a Nette.

enumag
Člen | 2118
+
0
-

Myslím že by se to dalo tak že bys adresu toho redirectu poslal na server normálně ajaxově a když se vrátí odpověď tak změnit url přes history push state. Ale nemám s tím zkušenosti.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

greeny nette.ajax.js se o tou pokouší (z principu je ten standardní redirect přes window.location naprostá hovadina, to už je lepší transparentně provést obyčejný request), a to v extenzi history. Nechci je ale doporučovat, nemám ji odladěnou a mohla by spíš způsobit problémy. Pokud máš čas a nervy, zkus ji :).

Jinak řešení je pochopitelně také, že zajaxuji aplikaci (pokud mi jde vždy o správná URL) pouze pokud je podporováno moderní History API v prohlížeči (pushState). Obvykle je zapotřebí dost snippetů, případně třeba obalit snipettem celý #content. Po doběhnutí požadavku se vytvoří v historii nový záznam.