Našeptávač podle návodu na zdrojáku
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- visitor
- Člen | 22
Vycházím z tohoto návodu: http://zdrojak.root.cz/…pokracovani/ ve spojení s AppForm, ale i když ještě v části $this->payload->autoComplete[] = $row[‚typ_vozidla‘]; mi to proměnou autocomplete plní (loguji si to do db), tak nakonec se do prohlížeče vrátí prázdná odezva. Pokud rozchodím přesný příklad z webu, tak je vše OK. Co mi to ještě může někde ve chvíli, kdy má NETTE odeslat data do prohlížeče rozhodnout o zaříznutí?
Presenter
<?php
public function handleAutoComplete($typ_vozidla)
{
$this->payload->autoComplete = array();
$typ_vozidla = trim($typ_vozidla);
if ($typ_vozidla !== '') {
$result = dibi::query('SELECT DISTINCT [typ_vozidla] FROM [w_auto] WHERE [typ_vozidla] LIKE %s ORDER BY [typ_vozidla]', '%'.$typ_vozidla.'%');
foreach ($result as $n => $row) {
dibi::query('insert into log values(%s)', $row['typ_vozidla']); // log abych vedel jestli to funguje
$this->payload->autoComplete[] = $row['typ_vozidla'];
}
$this->terminate();
}
}
?>
Template
@{block #content}
...
@{widget form}
<script type="text/javascript">
<!--
$('#frmform-typ_vozidla').focus().keyup(function(event) {
$.getJSON({link autoComplete!}, {'typ_vozidla': $('#frmform-typ_vozidla').val()}, function(payload) {
alert('tu'); // tady se uz nikdy nedostanu
$('ul').remove();
var list = $('<div class="ac_results"><ul></ul></div>').insertAfter('#frmform-typ_vozidla');
for (var i in payload.autoComplete) {
alert(payload.autoComplete[i]);
$('<li></li>').text(payload.autoComplete[i]).appendTo(list);
}
});
});
-->
</script>
...