Předcházení problémů s jQuery.ajaxSetup a dataType: „json“
- toka
- Člen | 253
Zdravím,
řešil jsem dost dlouho problém, proč mi nefungoval AJAX ve formuláři,
abych mohl upravovat obsah selectu
. Firebug pořád hlásil chybu.
Sice se mi dařilo vrácenou hodnotu vypsat pomocí alert(...)
, ale
přiřadit obsah proměnné do selectu
již vyhazovalo
výjimku.
Nevím jestli to lze nazvat chybou, ale „zakopaný pes“ byl v souboru jquery.nette.js na řádku 32:
jQuery.ajaxSetup({
success: jQuery.netteCallback,
dataType: "json"
});
Zde bylo nutné zrušit globální nastavení dataType
. Pak již
následující konstrukce fungovala skvěle:
function loadItems(value) {
$.get("?do=loadData&presenter=IS%3AMenu", {"value": value}, function(data) {
$('#frmformItem-parameters').replaceWith(data);
});
}
Vše ale není stále tak růžové, jak vypadá :-) Chyba se záhy objeví
při pokusu použít DataGrid. Zde je potřeba nahradit $.get
za
$.getJSON
, tedy řádek 45 v souboru datagrid.js:
$("table.datagrid a.datagrid-ajax").live("click", function () {
$.getJSON(this.href);
return false;
}
Snad se bude někomu hodit. Při použití jiných pluginů může být
náhrad $.get
za $.getJSON
více. Rád uvítám jiná,
lepší, řešení, pokud někdo má.
EDIT:
A nebo se na vše vyprdnout, lépe studovat dokumentaci, a zapsat
$.get
takto:
function loadItems(value) {
$.get("?do=loadData&presenter=IS%3AMenu", {"value": value}, function(data) {
$('#frmformItem-parameters').replaceWith(data);
}, "html");
}
Aspoň jsem se poučil :-)
EDIT2:
Akorát nedokáži předat pak hodnotu z „dynamického“ selectu dál. Vždy
je obsah NULL, jediné, co pomáhá je vytáhnout požadovaný
výsledek takto:
$postValues = $this->presenter->getRequest()->getPost();
A proto se ptám, proč se to nepřenese normálně přes
$formValues = $form->getValues();
?
Editoval toka (2. 2. 2010 9:16)