Nefunguje mi zavolani ajax dotazu pri zmene selectu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Mira
Člen | 3
+
0
-

Prosim pomozte, nedari se mi zprovoznit signal v nette. Mam formular a pri zmene vybraneho udaje v selectu se nezavola handleLoadData s parametry. Pokud ovsem zmenim volani „?do=loadData“ na „?action=loadData“, tak se handle zavola, ale vrati se nejaky objekt. Dekuji moc.

<?php
class LoginPresenter extends BasePublicPresenter {
...
public function renderRegister() {
	$form = new Form();
	$form->addSelect('ulice', 'Ulici:',array(0 => 	'Vyberte...'),1)->controlPrototype->onchange("getList(this.value,5);");
...
public function handleLoadData($code, $part) {
	die("TESTik");
}
?>
<script>
function getList(value, part){
...
    $.get("?do=loadData", {"code": value, "part": part}, function(data) {
    	alert(data);
    });
...
</script>
Etch
Člen | 403
+
0
-

To ti

<script>
$.get("?do=loadData", {"code": value, "part": part}, function(data) {
	alert(data);
});
</script>

nevrátí vůbec nic a

<script>
$.get("?cokoliv", {"code": value, "part": part}, function(data) {
	alert(data);
});
</script>

ti vrání „state“?? To je trochu podezřelé. Kdyby ti to nedělalo ani jedno nic nebo by to fungovalo jen v některém prohlížeči tak bych to pochopil, ale tohle mi nějak hlava nebere.

jinak asi bych tam spíš dal

<script>
$.get({link loadData!}, {"code": value, "part": part}, function(data) {
	alert(data);
});
</script>
Mira
Člen | 3
+
0
-

Etch napsal(a):

To ti

<script>
$.get("?do=loadData", {"code": value, "part": part}, function(data) {
	alert(data);
});
</script>

nevrátí vůbec nic a

<script>
$.get("?cokoliv", {"code": value, "part": part}, function(data) {
	alert(data);
});
</script>

ti vrání „state“?? To je trochu podezřelé. Kdyby ti to nedělalo ani jedno nic nebo by to fungovalo jen v některém prohlížeči tak bych to pochopil, ale tohle mi nějak hlava nebere.

Ano, je to presne tak. Vrati mi object, ktery obsahuje polozku state, ktera nema zadnou hodnotu. Neni podminkou pro pouziti signalu mit nejak nastavene routy? Pro jistotu pridavam nastaveni rout:

<?php
	$router[] = new Route('index.php', array(
		'presenter' => 'Default',
		'action' => 'default',
	), Route::ONE_WAY);

	$router[] = new Route('<presenter>/<action>', array(
		'presenter' => 'Default',
		'action' => 'default'
	));
?>

jinak asi bych tam spíš dal

<script>
$.get({link loadData!}, {"code": value, "part": part}, function(data) {
	alert(data);
});
</script>

Kdyz pouziji vysse zminovany kod, neprovede se vubec nic z javascript kodu(povoleni/nastaveni dalsich selectu).

Etch
Člen | 403
+
0
-

Vem si skeleton z Tools a dej tam :

@layout.phtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="Content-Language" content="en" />
	<meta name="description" content="Nette Framework web application skeleton" />
	<title>Test</title>
	<script type="text/javascript" src="{$baseUri}js/jquery-1.3.1.js"></script>
	<script type="text/javascript">
	function getList(value, part){
	    $.get({link loadData!}, {"code": value, "part": part}, function(data) {
	        alert(data);
		});
	}
	</script>
</head>
<body>
	{include #content}
</body>
</html>

HomepagePresenter.php

<?php
class HomepagePresenter extends BasePresenter
{
	public function renderDefault() {
		$form = new Form();
		$form->addSelect('ulice', 'Ulici:',array(0 =>   'Vyberte...', 1=> 1),1)
				->controlPrototype
				->onchange("getList(this.value,5);");
		$this->template->form = $form;
	}
	public function handleLoadData($code, $part) {
		die("TESTik");
	}

}
?>

a do šablony

{block #content}
{!$form}

v @layout.phtml si změn cestu k jquery

Mira
Člen | 3
+
0
-

Tak nakonec jsem zjistil, ze problem byl v pouziti jquery.nette.js. Kdyz jsem ho prestal pouzivat, tak vse funguje. Dekuji moc.