Voit tyhjentää verkkokaupan ostoskorin teemassa kahdella tavalla: lomakkeen tai asynkronisen JavaScript-kutsun avulla.

Johdanto

Molemmissa alla esitetyissä esimerkeissä luodaan sivulle lomake, jonka avulla ostoskori tyhjennetään:

<form id="cartEmptyForm" action="/cart/empty" method="POST">
    <button>{%ClearCart}</button>
</form>

Voit lisätä lomakkeen esim. mille tahansa sivulle, missä esitetään ostoskori tai sen osia. Eräs hyvä käytäntö on näyttää jokaisella sivulla jonkinlainen esikatselu ostoskorista (esim. {MiniCart}-tagilla) ja antaa perusteellisempi esitys ostoskorisivulla.

Tämän artikkelin JavaScript-esimerkeissä käytetään jQuery-kirjaston funktioita. Varmista että jQuery on lisätty sivulle, jos käytät tämän artikkelin skriptejä omassa teemassasi.

Voit lisätä jQueryn sivulle käyttämällä {SupportScripts}-tagia.

Ostoskorin tyhjentäminen lomakkeen avulla

Kun annat lomakkeelle attribuutin action="/cart/empty", ostoskori tyhjennetään lomakkeen lähetyksen yhteydessä. Lomakkeella ei tarvitse olla mitään muita kenttiä, kuin lähetyspainike, eli <button type="submit">-elementti.

Ostoskorin tyhjentäminen JavaScriptin avulla

Jos haluat vähentää ylimääräisiä sivunlatauksia verkkokaupassa, voit toteuttaa ostoskorin tyhjentämisen AJAX-kutsulla.

Alla olevassa koodissa ostoskori tyhjennetään ja ladataan uudestaan elementti, joka sisältää {MiniCart}-tagin:

function emptyAndReloadCart() {
    $.ajax({
        type: "POST",
        url: "/cart/empty",
        data: "",  // data-attribuutti voidaan jättää tyhjäksi tai kokonaan pois
        success: function() {
            /* Nyt ostoskori on tyhjä
            *
            * Tyhjennetään elementti, joka sisältää MiniCart-tagin
            */
            $("#MiniCartContainer").empty();

            // Haetaan MiniCart asynkronisesti ja kirjoitetaan se aiemmalle paikalleen
            $.get('/interface/MiniCart', function (response) {
                $("#MiniCartContainer").html(response);
            });
        }
    });

// Sidotaan ostoskorin tyhjennysfunktio lomakkeen lähetyspainikkeeseen
$.on("click", "#cartEmptyForm>button", function(event) {
    event.preventDefault();
    emptyAndReloadCart();
});

Jos käytät ostoskorin tyhjennyslomaketta ostoskorisivulla, kannattaa ostoskorin sisältö ladata uudestaan asynkronisesti, jotta asiakas näkee muutoksen ilman erillistä sivunlatausta.

Voit tehdä useimmat ostamiseen liittyvät toiminnot asynkronisilla JavaScript-kutsuilla. Lue myös seuraavat asynkronisia toimintoja käsittelevät artikkelit: