Ajax vrací v modal okně pouze {„state“:{„vp-page“:null}}

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
KillPrd
Začátečník | 110
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.