Ajax vrací v modal okně pouze {„state“:{„vp-page“:null}}
- KillPrd
- Začátečník | 110
Ahoj mám modal okno, v něm formulář ručně vykreslený.
vše funguje formulář ajaxově zpracovávám to mi také funguje a dokonce mi
vrací flash message do snippetu ale potřebuji přidat událost na selectbox
change a v té vrátit hodnoty do formuláře. Zarazil jsem se hned u toho že
se funkcen change provede ale nevrací hodnoty.
tedy ajax.js:
<?php
$(".pripad_select").live('change', function(e){
var muz = $("select[name='muz']").val();
var zena = $("select[name='zena']").val();
$.get("?do=pripad", "muz=" + muz + "&zena=" + zena + "");
});
?>
handlePripad():
<?php
public function handlePripad(){
$this->flashMessage('Případ byl přidán do databáze.');
$this->foo = 'ahoj';
$this->template->foo = $this->foo;
if($this->isAjax()) {
$this->invalidateControl('foo');
}
};
?>
šablona
{snippet foo}
{$foo}
{/snippet}
po vykonání požadavku change vrací hodnotu <script>{„state“:{vp-page </script>
tak a to je jediné co z toho vykřešu… :(
Asi bych měl dodat že v okně modal je šablona {extends none} která už
nic nedědí.
Zjistil jsem že pokud to není v modal okně ajax vrátí výsledek. Pokud se
přepnu do modal okna výsledek je null. trošku mě to zaráží protože když
dám zpracovat ajaxový formulář v modal okně vrátí mi to flash message
ajaxove a normálně. tak proč tedy nejede klasický handle signal…
zkoušel jsem i includovat šablonu do snippetu a také nepomohlo.
<?php
{snippet foo}
{include 'foo.latte'}
{/snippet}
?>
ještě jsem upravil ajax tak jak by měl asi vypadat.
<script>
$(".pripad_select").live('change', function(e){
$.get("?do=pripad", {"muz": $("select[name='muz']").val(),"zena": $("select[name='zena']").val()});
});
</script>
Editoval KillPrd (17. 6. 2011 8:21)
- KillPrd
- Začátečník | 110
Věc jsem vyřešil bohužel ne tak jak by měla být.
místo předání proměnné jsem v hadle musel dát echo a ajaxový požadavek
jsem upravil na toto
<script>
$("#nactimuze").live('click', function(event){
$.ajax({type: "GET",
url: "?do=nactimuze",
cache: false,
data: "muz=nic",
dataType: "html",
beforeSend: function(){
$("#modal #nactimuze").html('Nahrávám data...');
},
success: function(data){
("#modal #nactimuze").html('Vyberte ze seznamu muže ...');
$("#modal #snippet--muzi").html(data);
}
}); // ajax
});
</script>
- KillPrd
- Začátečník | 110
Rád bych toto téma oživil.
řešení které jsem zde udělal tak je sice funkční ale echuje mi i toto:
{„state“:[]} což by asi nemělo. zpusobuje to invalidateControl();
v případě že neuvedu invalidateControl() nenačte si vubec nic . jak mohu
zrušit zobrazování {„state“:[]} ? tedy json data která se mi
echují?
Rád bych ještě řekle že na linuxové distribuci to nedělá, ale u všech programu xamp, wamp,phpeasy které jsou instalovány na windows je tento problém..... :( kdyby to šlo nejak vyeskejpovat…
Editoval KillPrd (25. 7. 2011 13:15)
- KillPrd
- Začátečník | 110
Tak bych toto uzavřel, problém byl ve špatném zpracování a vracení
ajaxových požadavků.
dále je problém v includovaných šablonách tedy ajaxový výsledek se
nezobrazí v includované šablone :( myslím že to je otázka času někde
jsem vyčetl že to řeší dědičnost šablon ale mě se to nepovedlo
zprovoznit.