Potíže s AJAXEM onchange v presenteru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Petr Parolek
- Člen | 455
Ahoj,
mám potíže s formulářem ve spojením s AJAX. Potřebuju načíst data do druhého selectboxu s obcemi, když vyberu z prvního selectboxu okres.
Našel jsem řešení:
https://forum.nette.org/…o-selectboxy#…
Ale načtou se mi data do druhého selectboxu i po načtení stránky, ale já chci až po výběru okresu!
...
$form->addSelect('oid', 'Okres:', $this->users->fetchOkresy()->order('nazev')->fetchPairs('id','nazev'))
->setPrompt('-- Vyberte --');
$form->addSelect('mid', 'Obec:', $this->users->fetchObce()->order('nazev')->fetchPairs('id','nazev'))
->setPrompt('-- Vyberte --');
$form->addSubmit('send', 'Registrovat se');
$form->onSuccess[] = callback($this, 'signFormSubmitted');
...
...
public function handleChangeokresy($okres) {
$result = $this->users->fetchObce()
->where(array('okres_id' => $okres))->order('nazev')
->fetchPairs('id','nazev');
$result[0] = "---";
$this->sendResponse(new JsonResponse($result));
}
...
JS:
<script type="text/javascript">
$(function() {
$("#frm-registrationForm-oid").change(function() {
$.getJSON({link Changeokresy!},{ okres: $(this).val(), ajax: 'true' }, function(array) {
var options = '';
for (var key in array) {
options += '<option value="' + key + '">' + array[key] + '</option>';
}
$("#frm-registrationForm-mid").html(options);
$('#frm-registrationForm-mid option:first').attr('selected', 'selected');
});
});
});
</script>
Prosím kde mám chybu?
Díky moc.
EDIT:
if ($do == "Changeokres") {
$form->addSelect('mid', 'Obec:', $this->users->fetchObce()->order('nazev')->fetchPairs('id','nazev'))
->setPrompt('-- Vyberte --');
}
else {
$form->addSelect('mid', 'Obec:', Array())
->setPrompt('-- Vyberte --');
}
Toto mi taky nefunguje – lépe řečeno, neuloží se mi do db obec
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'mid' cannot be null
Ještě přiložím metodu z modelu:
public function register ($values) {
$password = $values['password'];
$salt = $values['username'];
$hash = hash_hmac('sha256', $password, $salt);
return $this->database->table('users')->insert(array(
'username' => $values['username'],
'jmeno' => $values['firstname'],
'prijmeni' => $values['lastname'],
'pohlavi' => $values['gender'],
'password' => $values['password'],
'mail' => $values['email'],
'role' => "user",
'datum_naroz' => $values['rok']."-".$values['mesic']."-".$values['den'],
'mid' => $values['mid'],
'oid' => $values['oid'],
));
}
Editoval ppar (31. 3. 2015 21:18)