Ajax by jQuery – nefunguje tak jak v návodu
- tomaass
- Člen | 74
Dobrý den,
podle tohoto návodu zde se snažím zprovoznit ajaxové requesty atp…
Toto je problém:
$form['lokalita']->getControlPrototype()
->onchange('loadBox(1, this.value);');
v události onchange mi jQueryjový $.get ne a ne fungovat. Strávil jsem s tím celý den, a na oficiálním fóru jQuery mi řekli, že se to nesmí dělat v onchange elementu, ale na stránce pomocí
$(":button").click(function() {
loadBox();
});
Tak kde je pravda? :D Mě osobně by se onchange hodilo daleko víc, proč to nefunguje?
Děkuji za info,
Tom
- newPOPE
- Člen | 648
$(":button").click(function() { loadBox(); });
Ja by som to skor riesil takto:
<script>
$(":select[name=nazovSelectu]").change(function(){
$.get({link mojHandle!}, {lokalita: $(this).val()}, function(payload){
//tu urobim s odpovedou zo servera co potrebujem
})
});
</script>
Editoval newPOPE (11. 7. 2010 10:36)
- toka
- Člen | 253
Takto by to mělo fungovat – „vytahal“ jsem části kódu:
...
$form->addSelect('target', 'Typ odkazu:', $types)
->getControlPrototype()->onchange('loadItemTargets(this.value);');
...
function loadItemTargets(value) {
jQuery.get("{link loadData! }", {"value": value}, function(data) {
jQuery('#frmformAddItem-target').replaceWith(data);
}, "html");
}
public function handleLoadData($value) {
$form = $this->getComponent('formAddItem');
$data = $this->model->getAllTargetsByType($value);
$form['target']->setItems($data);
echo $form['target']->getControl();
$this->terminate();
}
Akorát, má zkušenost, se pak nedá přistoupit k tomuto prvku přes
$form->getValues();
. Je třeba postupovat např. takto:
$form->getValues();
$postValues = $this->presenter->getRequest()->getPost();
$formValues['target'] = $postValues['target'];
- tomaass
- Člen | 74
Bohužel to nefunguje.
Prostě a jednoduše, když se na onchange zavěsí volání funkce, tak v tý funkci nejde jQueryjový get..
pro zjednodušení:
<?php
$form['type']->getControlPrototype()
->OnChange('loadItemTargets(this.value);');
?>
<script>
function loadItemTargets(value) {
jQuery.get("{link loadData! }", {"value": value}, function(data) {
// jQuery('#frmformAddItem-target').replaceWith('asdasda');
alert('baa');
}, "html");
}
</script>
<?php
public function handleLoadData($value)
{
echo 'asdasD';
$this->terminate();
}
?>
Editoval tomaass (11. 7. 2010 12:19)
- tomaass
- Člen | 74
to jsem zkousel taky. Nema to vliv. Funkce loadněco se zavolá, ale get ne. Respektive, jak je napsano v manualu: Kdyz se funkce get provede uspesne, tak se zavola obsluzny callback. Coz v tomto pripade se nezavola ⇒ get neprobehne uspesne.
Firebug ani podobny udelatka nemam.
Cely kod taky neposlu, je toho vela :D
Toto musi stacit. S nicim jinym to nekoliduje nebo tak. Je to da se rict
samostatny (co se tyce funkcnosti)
- toka
- Člen | 253
Aha :-) Bez uvozovek ten link
. To je tím neskutečným
teplem :-D
function loadItemTargets(value) {
jQuery.get({link loadData! }, {"value": value}, function(data) {
// jQuery('#frmformAddItem-target').replaceWith('asdasda');
alert('baa');
}, "html");
}
Editoval toka (11. 7. 2010 14:11)