FormData进展停留在1%

时间:2015-09-27 02:37:02

标签: javascript jquery ajax

我正在使用this Stackoverflow question中的代码。出于某种原因,当上传开始时,百分比值停留在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;
});

1 个答案:

答案 0 :(得分:1)

下面:

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

这不是一个百分比(如50%),它是一个分区(如0.5
这就是它永远不会超过1的原因。

如果要显示百分比,则需要将其乘以100:

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

就这么简单:)