Nefunguje mi zavolani ajax dotazu pri zmene selectu
- Mira
- Člen | 3
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
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
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
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