Autor Zpráva
pajadvorak
Profil
Nemohu přijít na to, jak mám správně nastavit spuštění funkce.....


Zde je kód ze scriptu, kterým volám ajax
<input type="button" value="do košíku" class="tlacitko_koupit_detail" id="do_kosiku_pc">
                
<script nonce="<?=$nonce?>">
    document.addEventListener('DOMContentLoaded', function () {

        $("#do_kosiku_pc").click(function(){
              cartAction('add','<?php echo $zbozi['id']; ?>','1','<?php echo $nonce; ?>','<?php echo $zbozi['post_500'];?>','<?php echo $zbozi['sleva_doprava'];?>','<?php echo "$_SERVER[REQUEST_URI]";?>');
        });
    });
</script>

..........

<script nonce="<?=$nonce?>">
function cartAction(action,product_code,pocet,nonce,post_500,sleva_doprava,odkud_prisel) {
                
        // požadavek, který nám vrátí vnitřní HTML do ModalWindow
                var queryString = "";
                    
                if(action != "") {
                    switch(action) {
                        case "add":
                            queryString = 'action='+action+'&id='+ product_code+'&pocet='+pocet+'&nonce='+nonce+'&post_500='+post_500+'&sleva_doprava='+sleva_doprava+'&odkud_prisel='+odkud_prisel;
                            break;
                        case "remove":
                            queryString = 'action='+action+'&code='+ product_code;
                            break;
                        case "empty":
                            queryString = 'action='+action;
                            break;
                    }     
                }
                
                jQuery.ajax({
                url: "ajax_action.php",
                data:queryString,
                type: "POST",
                success:function(data){
                    $("#modaltext").html(data);
                    if(action != "") {
                        switch(action) {
                            case "add":
                                modal.style.display = "block";
                                break;
                        }     
                    }
                },
                error:function (){}
                });    
            }
</script>


A problém mám v ajax_action.php, kdy mi nefunguje podmínka document.addEventListener('DOMContentLoaded', function spust_zbozi_kosik_okno(e) {...........});

A to je kámen úrazu, kdy člověk může kliknout na tlačítko přidat do košíku dříve než je to komplet připravené a funkce spust_zbozi_kosik_okno se zboří, protože ještě není vše načtené.

Normálně to funguje (spust_zbozi_kosik_okno), když mám tuto funkci na první stránce bez ajaxu. Jak je to pod ajaxem nefunguje mi to. Děkuji za každou radu.

<script nonce="<?=$nonce?>">
//document.addEventListener('DOMContentLoaded', function spust_zbozi_kosik_okno(e) {
function spust_zbozi_kosik_okno(e) {
    $('.zbozi_kosik_okno').not('.slick-initialized').slick({
      dots: false,   // dot indikátory (posunovací puntíky)
      infinite: true, // nekonečná smyčka true / false
      speed: 900, // rychlost animace
      //autoplay: 'Autoplay', // default = false; hodnota 'Autoplay' = true
      //autoplaySpeed: 4000, // čas automatického posunutí (ms)
      slidesToShow: 4, // počet k zobrazení + níže responzivita
      slidesToScroll: 4, // počet k zobrazení + níže responzivita
      //centerMode: true,
      responsive: [
    {
        breakpoint: 1201, // při nižším rozlišení ukážeme pouzze 1 kartu na stránce
        settings: {
            slidesToShow: 3,
            slidesToScroll: 3,
            infinite: true,
            dots: false
        }        
    },
    {
        breakpoint: 768, // při nižším rozlišení ukážeme pouzze 1 kartu na stránce
        settings: {
            slidesToShow: 2,
            slidesToScroll: 2,
            infinite: true,
            dots: false
        }        
    },
    {
        breakpoint: 699, // při nižším rozlišení ukážeme pouzze 1 kartu na stránce
        settings: {
            slidesToShow: 1,
            slidesToScroll: 1,
            infinite: true,
            dots: false
        }        
    }
    // You can unslick at a given breakpoint now by adding:
    // settings: "unslick"
    // instead of a settings object
  ]
    });

};

$(window).scroll(function(){
    // schováme tlačítka previous / next
    //$(".slick-arrow").css("visibility","hidden");
});

$(document).ready(spust_zbozi_kosik_okno);
//document.addEventListener('DOMContentLoaded', function (spust_zbozi_kosik_okno) {
//});
</script>
Kcko
Profil
pajadvorak:
Když pominu, že ten kód je fakt hnůj, tak proč nepoužiješ document.ready a mícháš to s nativním JS?

queryString = 'action='+action+'&id='+ product_code+'&pocet='+pocet+'&nonce='+nonce+'&post_500='+post_500+'&sleva_doprava='+sleva_doprava+'&odkud_prisel='+odkud_prisel;
Tohle je taky hnůj.

Někde jsem psal, že se to dá psát jako

var data = {
 key: value,
key2: value2
}

A skutečně potřebuješ takhle míchat PHP a JS?
Je to celé zralé na refaktoring.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0