Ajax se volá vícekrát + uchování proměnné pro řazení
- hancs
- Člen | 57
Zdravím,
potřeboval bych poradit ohledně dvou věcí.
Mám tabulku a při kliknutí na jednotlivé řádky si ajaxem tahám detaily řádku a zobrazuji je v jiné tabulce. Mám problém s tím, že když kliknu na řádek poprvé po načtení stránky, tak se ajax zavolá správně jednou, ale při kliknutí znovu se zavolá 2× následně 3× atd..
na řádek mám ajax návázán tímto způsobem:
<tr data-click-handle='{l}"url":"{link show! $row->id}", "type":"ajax"{r}'>
javascript vypadá takto:
<script>
$(function () {
$.nette.ext({
load: function () {
$('tr[data-click-handle]').click(function (e) {
var obj = $(this).data('clickHandle');
if (obj.type == 'ajax' && !$(e.target).hasClass("excluded")) {
e.preventDefault();
$.nette.ajax({
url: obj.url
});
// ajaxové volanie handle
} else {
//window.location = obj.url;
// window.location = $(e.target).href;
}
});
}
});
$.nette.init();
});
</script>
a handle takto:
public function handleShow($id){
if ($this->isAjax()) {
$polozky = $this->dataTableManager->getListWhere("polozka", "zakazka_id", $id);
$this->template->polozky = $polozky;
$this->redrawControl('polozky');
}
}
Dále potřebuji prvky řadit, mám přidaný link do nadpisů sloupců a po kliknutí na něj volám handle, který vytáhne data z databáze v daném pořadí. To mi funguje, problém nastane, když kliknu na další stránku(ajaxove strankovani), tak se data opět načtou v defaultním pořadí. Stejný problém mám s tím když na nadpis kliknu podruhé, tak chci aby se mi řazení změnilo na opačné. K tomu bych chtěl použít persistentní proměnné, které mi uchovají používané řazení a poslední použitý sloupec pro řazení. Mám je jako proměnné v presenteru, s anotací persistent a měním je v handle funkci, bohužel se mi proměnné neuchovávají.
Budu rád za jakoukoliv radu.
Předem díky.
- ondrusu
- Člen | 118
Ahoj, vícenásobné volání ajaxu jsem řešil taky zde:
https://forum.nette.org/…ice-requestu