Neprijemnost s nette.ajax.js, signalem a komponentou
- Azim
- Člen | 41
Zdravim!
Pro ajaxizaci pouzivam skvele rozsireni https://componette.org/search/?…
a narazil jsem asi ne na chybu, ale na vec, ktera mi zneprijemnuje zivot.
Mam komponentu, v niz chci ajaxem zpracovavat signal, na coz bezne pouzivam
tuto konstrukci:
$.nette.ajax({
type: 'GET',
url: {link swipe!},
data: {
cisloKarty: parsedSwipe.CardNumber
}
});
toto vsak nefungovalo, parametr se do komponenty nepredal, ale v presenteru byl. chyba byla ve spatnem pojmenovani parametru – takto to uz funguje (name je nazev komponenty):
$.nette.ajax({
type: 'GET',
url: {link swipe!},
data: {
"{!$name}-cisloKarty": parsedSwipe.CardNumber
}
});
Otazka na vas, zkusenejsi uzivatele nette a nette.ajax.js – jak podobne
situaci resite vy? nezda se mi nejlepsi zpusob si pamatovat, ze v komponente
musim k nazvu parametru doplnit rucne nazev komponenty.
Diky za tipy
- Majkl578
- Moderator | 1364
Jelikož jde o komponentu, nemůžeš tam hardcodovat název, protože nevíš, jak se bude jmenovat a ani v jaké úrovni hiearchie bude. Nutno tedy použít něco takového:
var data = {};
data[{$control->getParameterId('cisloKarty')] = parsedSwipe.CardNumber;
// nebo
data[{$control->uniqueId} + '-cisloKarty'] = parsedSwipe.CardNumber;
$.nette.ajax({
type: 'GET',
url: {link swipe!},
data: data
});
V výše uvedených dvou způsobů používám ten druhý (méně psaní), ačkoliv ten první je správnější.
Problém s nette.ajax.js nijak nesouvisí, stejný problém bys musel řešit ať bys použil jakoukoliv knihovnu.