我正在使用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;
});
答案 0 :(得分:1)
下面:
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
}
这不是一个百分比(如50%
),它是一个分区(如0.5
)
这就是它永远不会超过1的原因。
如果要显示百分比,则需要将其乘以100:
var percentComplete = evt.loaded / evt.total * 100;
就这么简单:)