FormData进度停滞在1%

FormData Progress stuck at 1%

本文关键字:停滞 FormData      更新时间:2023-09-26

我正在使用这个Stackoverflow问题的代码。由于某些原因,当上传开始时,百分比值停留在1%,并且在上传完成后,PHP脚本显示成功消息。

请告知,为什么百分比值停留在1%。

jQuery代码

function updateProgress(evt){
    if (evt.lengthComputable) {
        var percentComplete = evt.loaded / evt.total;
        $('form[data-submit="ajax_upload_mp3"] .validation').html( percentComplete + '% Completed').addClass('text-success');
    }
}
$(document).on('submit', 'form[data-submit="ajax_upload_mp3"]', function(){
    wrap = 'form[data-submit="ajax_upload_mp3"]';
    button = 'form[data-submit="ajax_upload_mp3"] .btn-primary';
    url = $(this).attr('action');
    form = $(this);
    formdata = new FormData(form[0]);
    $(wrap + ' .validation').html('').removeClass('text-danger text-success');
    $(wrap + ' .btn-primary').html('Uploading...').attr('disabled', true);
    $.ajax({
        url: url,
        data: formdata ? formdata : form.serialize(),
        cache: false,
        contentType: false,
        processData: false,
        type: 'POST',
        xhr: function(){
            myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){
                myXhr.upload.addEventListener('progress', updateProgress, false);
            }
            return myXhr;
        },
        success: function(data, textStatus, jqXHR){
            code = ajax_decode(data, 0);
            msg = ajax_decode(data, 1);
            if( code == 1 ){
                $(wrap + ' .validation').html(msg).addClass('text-success');
                $(wrap).trigger("reset");
            } else {
                $(wrap + ' .validation').html(msg).addClass('text-danger');
            }
            $(wrap + ' .btn-primary').html('Upload').attr('disabled', false);
        }
    }); 
    return false;
});

此处:

if (evt.lengthComputable) {
    var percentComplete = evt.loaded / evt.total;
}

它不是一个百分比(如50%),它是一个除数(如0.5)
这就是为什么它永远不会超过1。

如果你想显示百分比,你需要乘以100:

var percentComplete = evt.loaded / evt.total * 100;

就这么简单:)