Komponentě se nepředá parameter poslaný AJAXově z javascriptu
- Roman Halaxa
- Člen | 60
Ahoj,
už si moc nevím rady. Mám tenhle javascript
scanOutput.change(function(){
//Link do handleru
var handlerLink = $('#nove-mereni-js-data').data("handlerLink");
$.nette.ajax({
'url': handlerLink,
'data': {
//Handleru se pošle naskenovaný kód
code: scanOutput.val()
},
success: function(payload) {
//Donačtení vrácených dat z handleru
}
});
});
Zde je vše funkční. Handler se zavolá, data se donačítají (Když naplním payload nějakými testovacími daty)
Problém je přímo v handleru
//Kód je prázdný, nepředá se sem přesto že se v pořádku odešle
public function handleDependentCallback($code)
{
//Načtení záznamu podle naskenovaného kódu, samozřejmě nefunkční protože nemám ten kód
//Naplnění payloadu a odeslání dat zpět. To funguje v pohodě ale nemám ten záznam z databáze.
}
V presenteru tohle samé fungovalo… Příjde mi že kdykoliv zkouším formulář obalit komponentou hrozně si nabiju hubu, všechno je nefunkční a strávím u toho celý den jen abych zjistil že to bylo lepší tak jak to bylo :) Ale tentokrát to nechci vzdát. Tohle je poslední věc co nefunguje.
Četl jsem diskuze na tohle téma ale většina vláken je strašně stará. Děkuji za pomoc
- manwe
- Člen | 44
ja teda nevim jak to resit „spravne“, ale da se to resit takhle
scanOutput.change(function(){
//Link do handleru
var handlerLink = {link dependentCallback! 'TMP'}.replace('TMP', scanOutput.val());
$.nette.ajax({
'url': handlerLink,
success: function(payload) {
//Donačtení vrácených dat z handleru
}
});
});
proste data posles primo v te URL… tzn ono si to vytvori link kde $code je TMP, a pres JS ten TMP prepises na hodnotu kterou chces
- Roman Halaxa
- Člen | 60
manwe napsal(a):
ja teda nevim jak to resit „spravne“, ale da se to resit takhle
scanOutput.change(function(){ //Link do handleru var handlerLink = {link dependentCallback! 'TMP'}.replace('TMP', scanOutput.val()); $.nette.ajax({ 'url': handlerLink, success: function(payload) { //Donačtení vrácených dat z handleru } }); });
proste data posles primo v te URL… tzn ono si to vytvori link kde $code je TMP, a pres JS ten TMP prepises na hodnotu kterou chces
Ahoj. Zatím neúspěšně zkouším :D
„/nove-mereni/?noveMereni-46609408=code&do=noveMereni-DependentCallback“
Tohle mi to vygenerovalo. Myslím že je tam něco přeházené :D Jdu zkoušet dál.
Díky
EDIT: stačilo to pojmenovat TMP jak jsi to měl ty, on ten parametr se jmenuje kód :D takže se to replacenulo jako první výskyt. Děkuju moc ale ! Sice to neni dokonalé ale aspoň se prozatím můžu pohnout dál :D
Editoval Roman Halaxa (22. 3. 2019 11:13)
- CZechBoY
- Člen | 3608
Ta url je fakt nějaká divná…
Zkus explicitně uvést že nastavuješ hodnotu pro parametr code:
scanOutput.change(function(){
//Link do handleru
var handlerLink = {link dependentCallback!, code => 'TMP'}.replace('TMP', scanOutput.val());
$.nette.ajax({
'url': handlerLink,
success: function(payload) {
//Donačtení vrácených dat z handleru
}
});
});
- Roman Halaxa
- Člen | 60
CZechBoY napsal(a):
Ta url je fakt nějaká divná…
Zkus explicitně uvést že nastavuješ hodnotu pro parametr code:
scanOutput.change(function(){ //Link do handleru var handlerLink = {link dependentCallback!, code => 'TMP'}.replace('TMP', scanOutput.val()); $.nette.ajax({ 'url': handlerLink, success: function(payload) { //Donačtení vrácených dat z handleru } }); });
Momentálně funkční url je „/nove-mereni/?noveMereni-code=46609408&do=noveMereni-DependentCallback“
Já to TMP měl pojmenované code a ten parametr je první takže se to replacenulo jako první a udělalo to takový zmatek :) Teď už je to myslím v pohodě.
EDIT: ještě doplním že presenter je nove-mereni a komponenta se jmenuje taky nové měření proto ti možná příjde divná. Ještě to asi trošku zrefaktoruji postupně ať je to více jasné.
Editoval Roman Halaxa (22. 3. 2019 11:26)