Nefunkční překreslení při volání nette ajax
- JanDominik
- Člen | 2
Zdravím, možná něco dělám špatně, ale neuvědomuji si co, potřeboval bych tedy radu.
Mám select input
<select name="partner_id[]" id="frm-userForm-partner_id"
class="js-numbers-partner form-control ajax">
<option value="">Vyberte partnera</option>
{foreach $partnerList as $key => $partner}
<option value="{$key}">{$partner}</option>
{/foreach}
</select>
na který je navedený on change event
<script>
$(document).on('change', '.js-numbers-partner', function () {
var select = $(this);
$.nette.ajax({ // Zkoušel jsem i $.get, $.ajax, $.getJSON
type: 'GET',
url: {link loadNumbers!},
data: { 'partnerId': $(this).val() },
success: function (payload) {
}};
});
</script>
A samotný handler
<?php
public function handleLoadNumbers($partnerId)
{
if ( ! $partnerId || $partnerId == '')
return false;
$partner = $this->partnersRepository->find($partnerId);
...
unset($this->template->partnerList[$partnerId]);
$this->redrawControl('numbersContent');
$this->sendJson($this->payload->partner);
}
?>
A celý formulář obalený snippetem numbersContent. Payload se správně odešle a obsah šablonové proměnné partnerList se správně upraví, ale redrawControl už nic neudělá a nepřekreslí se. Záměr je ze select inputu odstranit již vybranou položku, protože hned dále je další button, který část se selectem zduplikuje.
Když dám unset a redraw do samostatného handleru, ten zavolám klasickým a hrefem, tak se obsah proměnné správně upravý a hlavně se snippet překreslí.
Prosil bych radu, co může být špatně? Děkuji mnohokrát
Nette 2.2.2 (2014–06–26)
jQuery 1.8.3
Nette.ajax 1.2.2
Vše načítáno ve správném pořadí
- David Matějka
- Moderator | 6445
smaz radek
$this->sendJson($this->payload->partner);
– ten totiz
ukonci beh presenteru a ani nedojde k provedeni sablony (a tedy k prekresleni
snippetu)
- JanDominik
- Člen | 2
Ah, díky.. zapomněl jsem, že sendResponse ukončuje celý běh.
Myslím, že teď to bude v pohodě, když to rozdělím do dvou handlerů a do
dvou ajaxových requestů.
Díky moc :)