AJAX volání se provede, handle spustí ale data se nepošlou do snippetu
- sejmor
- Člen | 63
Zdravím a zase řeším určitě stupid problém:
Prostě našeptávač:
Mám formulářový input:
…
<?php
$form->addText('findtext', 'Find:', 10, 40)
->setAttribute('autocomplete', "off")
->setAttribute('placeholder', "Vyhledávání")
->setAttribute('class', 'findform');
?>
…
K němu script
<script type="text/javascript">
$(function () {
$('input.findform').on('keyup', function () {
var value = $(this).val();
if (value.length >= 2) {
$('div.naseptavani').show();
$.nette.ajax({
'url': {link search!},
'data': {
term: value
}
});
}else{
//$('div.naseptavani').hide();
}
});
});
</script>
V presenteru:
<?php
public function actionDefault()
{
$this->template->results='po načtení';
}
public function renderDefault() {
}
public function handleSearch($term)
{
$this->template->results = 'ze searche';
$this->redrawControl('naseptavani');
}
?>
A v šabloně:
<?php
{snippet naseptavani}
<div class="naseptavani">
{$results}
</div>
{/snippet}
?>
Po načtení stránky se mi v divu správně zobrazí „po načtení“. Pokud napíšu alespoň dva znaky do vyhledávací pole tak se zavolá AJAXem handleSearch. Ve firebugu mi vrátí normálně status 200. Do snippetu mi ale nepošle proměnou results – pošle pouze:
<?php
{"state":{"lang":null}}
?>
Jak do něj nacpu proměnou $result ?
Editoval sejmor (4. 5. 2018 13:32)