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)