Diskuze: .net core web app - klik na button bez reloadování
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, JavaScriptu se nevyhneš. Rovnou bych doporučil rozšířenou knihovnu jQuery, která je na tyto běžné věci mnohem přátelštější.
Pokud to máš přes formulář, tak koukni sem: "https://api.jquery.com/submit/ ":https://api.jquery.com/submit/
Ty vlastně přes tento submit zavoláš úplně stejný view jako při klasickém kliknutí, ale důležitá metoda
preventDefault()
zajistí, že se nebude reloadovat celá stránka.
Z tvého .net backendu si potom jako výsledek pošleš libovolná data a pomocí těch třeba upravíš vizuální podobu košíku.
V tvém podání to zní tak jednodušše, ale já se s tím strašně
peru:
První fuška pro mě bylo vůbec přimět JavaScript něco dělat, pak reagovat
na klepnutí na submit... no nicméně teď už tuhle část mám a ušpěšně
dokážu reagovat na submit bez reloadu.
Takže co teď potřebuju dál, je z toho JavaScriptu zavolat .net metodu pro
přidání Itemu do kušíku. Provedl jsem menší výzkum a můj momentální
dojem je, že pokud opravdu nechci reloadovat stránku, ale zároveň budu
chtít odeslat data na server, nebude mi stačit JavaScript, ale budu
potřebovat AJAX. Kdybych se mýlil a přes AJAX by to bylo zbytečně
komplikované (případně zastaralé, některé tutoriály, co jsem našel jsou
z roku 2008), tak mě případně oprav, nicméně v tuhle chvíli si o téhle
technologii jdu zjišťovat víc. To co teď potřebuji snad nebude zas až tak
složité a budou mi stačit nějaké základy.
Jo a samozřejmě děkuju za nasměrování. Po delší době jsem s tím
konečně aspoň trochu pohnul
Aha, já nevěděl, jak moc/málo mám radit...
Samotný AJAX neřeš, to je pouze označení pro asynchronní JavaScript věci. Tedy to, co se přes JS dělá běžně. Níže příklad kódu z jedné mé webové appky, kde přes AJAX mažu data a předtím se ptám přes modal dialog, jestli opravdu smazat.:
$('form#modal-delete-confirm-form').submit(function (e) {
e.preventDefault();
var form = $(this);
let url = form.attr('action');
$.ajax({
type: "POST",
url: url,
data: form.serialize(),
success: function (data) {
console.log(data);
$('#delete-confirmation').modal('hide');
}
});
});
Tímto vlasně jQuery řeknu, aby reagovalo, když je formulář submittnutý na server, což znamená že uživatel stiskl Submit tlačítko. preventDefault zakáže tradiční reload stránky. Pomocí jQuery získám data z formuláře a taky url adresu, na kterou to budu posílat. To je .net metoda v tvém případě, kam se to pošle při tradičním reloadnutí stránky (to jsme teď zakázali přes preventDefault).
Success parametr je potom metoda, co se vykoná, když se to celé povede.
Tady data loguju do konzole. Je to klasický JSON, který si posílám z webové
appky, takže podle toho bys přes jQuery upravil obsah košíku uživateli a to
je celé
Lepší takto?
Zpětně ještě jedno děkuji, takhle mi to funguje pěkně
Zobrazeno 5 zpráv z 5.