Muj prvni ajax priklad -přesměrovává se na novou url
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- ondrej256
- Člen | 186
Zdravím,
začal jsem se učit ajax v nette a nevím si rady proč mně tento příklad nefunguje.
presenter
public function handleTryAjax(){
$this->ajaxPokus = "Zmeneny text";
if($this->isAjax()){
$this->redrawControl('pokus');
}
}
šablona
<a class="ajax" n:href="tryAjax!">Change</a>
{snippet pokus}
{$ajaxPokus}
{/snippet}
<script>
$(function(){
$('a.ajax').live('click',function(){
$.get(this.href);
return false; // aby se nepreslo na novou adresu
});
});
</script>
K tomu mam v head layout.latte nalinkovanou knihovnu https://componette.org/search/?…
Nevím co je tam špatně. Pořád to funguje jako přesměrování na novou stránku, kde se text změní, ale já chci aby to šlo ajaxově.
- Jan Suchánek
- Člen | 404
Jinak místo return false; můžeš používat http://api.jquery.com/…ventdefault/
<script>
$(function(){
$('a.ajax').on('click',function( event ){
event.preventDefault();
$.get(this.href);
});
});
</script>
- ondrej256
- Člen | 186
matej21 napsal(a):
$this->template->ajaxPokus
- radeji pouzij nette.ajax.js
Dal jsem se tedy raději na cestu dle bodu 2. Našel jsem příklad zde na stránkách
https://doc.nette.org/…ication/ajax
Ale chová se to uplně stejně. Po kliknutí na odkaz se načte nová stránka.
šablona
<script type="text/javascirpt">
$(function () {
$.nette.init();
});
</script>
<div id="content">
{snippet ajaxChange}
{$anyVariable}
{/snippet}
<a n:href="changeVariable!" class="ajax">Change variable!</a>
</div>
presenter
/** @var string */
private $anyVariable;
public function handleChangeVariable()
{
$this->anyVariable = 'changed value via ajax';
if ($this->isAjax()) {
$this->invalidateControl('ajaxChange');
}
}
layout.latte
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript" href="{$basePath}/js/nette.ajax/nette.ajax.js"></script>
Mám to naprosto stejně jak je v tom příkladu
- Jan Suchánek
- Člen | 404
Nepoužívej:
$this->invalidateControl('ajaxChange');
používej
$this->redrawControl('ajaxChange');