Diskuze: Ajax -> Odeslání formuláře a update divu
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 11 zpráv z 11.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.


Udelej si anonymni prvek, nahrej do nej vysledek a pak vyparsuj formular :
var thtml = $( '<div></div>' );
thtml.html(htmlData);
$('#formBasketStep1').html( $('#formBasketStep1', thtml).html() );
Ahoj, a co za data v jakem formatu ti to vraci ? Nešlo by vracená data projít najit hodnoty inputů a priradit je podle name ? Jinak bych asi upravil kosik, aby vracel v podstatě post, ktery ty posíláš a ty nabindoval na dané inputy.
Vrací se mi to v html, což musí zůstat. Jedná se o celkem rozsáhlou aktualizaci stávajícího košíku a tak php musí být beze změny, pak bych musel zasahovat i do původního košíku což není žádoucí. Jedná se totiž o některé informace, které bych složitě zpracovával na straně klienta a když se budou přidávat další funkce, tak bude lepší načíst formulář celý.
Super, tak to funguje, ale mám ještě problém. Jakmile poprvé odešlu formulář, tak je to v pohodě. Po druhé se to již také odešle, ale 2x . Opakované odeslání bez refreshe to stále odešle již jen 2x.
Při tom nikde nevidím tlačítko, které to spouští 2x . Napadlo mě tedy, že to bude způsobovat ten anonymní a potřeboval bych ho vždy vymazat, jak to provedu?
Napadlo mě proměnnou "thtml" vždy vymazat, ale problém to neřeší. Je tam něco skrytého co to odešle 2x . Pro jistotu jsem nechal spouštět jen ajax, takže se před tím nespouští nic dalšího kromě .on(click.... .
$.ajax({
type: 'post',
url: '/kosik',
data: $('#formBasketStep1').serialize(),
success: function (htmlData) {
var thtml = 0;
var thtml = $('<div></div>');
thtml.html(htmlData);
$('form#formBasketStep1').empty();
alert("smazáno");
$('form#formBasketStep1').html( $('form#formBasketStep1', thtml).html() );
}
});
Asi to bude tim, ze netestujes, jestli je ten success spravny:
success: function (htmlData,textStatus) {
if(textStatus=='success'){
//neco
}else{
// chyba
}
Pro jistotu jsem to zkusil, ale tím to není. Na víc se to způsobí jen tehdy, kdy dojde k novému načtení toho formuláře z anonimního prvku.
Tak už vyřešeno, nevkládal jsem to do žádného elementu, ale rovnou
zpracovával výsledek.
Asi před tím nějaká chyba, ale při dalším testování se již počet
odeslání navyšoval, teď už teda ne.
Již to funguje jak má.
if(textStatus=='success'){
$('form#formBasketStep1').html( $('form#formBasketStep1', htmlData).html() );
}
Mimochodem... určitým způsobem lepší řešení než
.on('click', ...) je lepší
$(form).submit(function(e){
e.preventDefault();
...
});
Potom to bude fungovat vždy, když se to má odeslat a ne jen, když
stiskneš tlačítko. To je třeba lepší pro uživatele, co jsou efektivní a
používají k odeslání formulářů enter.
A také se to vždy spustí jen jednou.
To by sice bylo hezké, ale nejde zde jenom o odeslání formuláře, ale o další zpracování různých informací a tak je pro mě velice důležité, které tlačítko uživatel zmáčkne, provedou se procesy před odesláním a následně se to odešle.
Ale určitě jsem rád i za tuto radu, snaha se určitě cení 
Zobrazeno 11 zpráv z 11.