Autor Zpráva
ManasPetr
Profil *
V bootstrap 4 používám modal ve kterém FORM odesílám pomocí javascriptu. Jenže nyní řeším upload souborů v modal a XHR nefunguje, neukazuje progress upload souboru. Poradíte prosím?

$("#ProjektyForm1").submit(function(event){
    event.preventDefault();
    var modalform = $(this);

    $.ajax({
        type: "POST",
        url: "/projekty_ajax.php",
        contentType: false,
        cache: false,
        processData:false,
        data: new FormData(this),
        xhr: function() {
            var xhr = new XMLHttpRequest();
            xhr.upload.addEventListener("progress", function(e) {
                if (e.lengthComputable) {
                    //var uploadPercent = e.loaded / e.total; typo uploadpercent (all lowercase)
                    var uploadpercent = e.loaded / e.total; 
                    uploadpercent = (uploadpercent * 100); //optional Math.round(uploadpercent * 100)
                    $('.progress-bar').text(uploadpercent + '%');
                    $('.progress-bar').width(uploadpercent + '%');
                    if (uploadpercent == 100) {
                        $('.progress-bar').text('Completed');
                    }
                }
            }, false);
            
            return xhr;
        },
        success: function(response){
            if (response == 'ok')
            {
                modalform.find("#ProjektyHTMLinfo").html('<p class="alert alert-success" role="alert">Formulář byl odeslán.</p>');
                setTimeout(
                    function(){
                        $("#NewProjekty").modal('hide');
                        location.reload();
                    }, 1000);
            } else {
                modalform.find("#ProjektyHTMLinfo").html(response);
            }
        }
    });
    return false;
}); 

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