İlerleme olayları için XMLHttpRequest düzey 2 desteğini kullanarak bir yükleme ilerleme çubuğu HTML5 yolunu uygulamaya çalışıyorum. gördüğün her örnekte XMLHttpRequest ProgressEvent.lengthComputable neden yanlış olabilir?
, yöntem şöyle ilerleme olayı bir olay dinleyicisi eklemektir:req.addEventListener("progress", function(event) {
if (event.lengthComputable) {
var percentComplete = Math.round(event.loaded * 100/event.total);
console.log(percentComplete);
}
}, false);
Bu gibi örnekler hep event.lengthComputable gerçek olacağını varsaymak gibi görünüyor. Sonuçta, tarayıcı gönderdiği isteğin uzunluğunu biliyor mu?
Ne yaptığım önemli değil, event.lengthComputable yanlıştır. Bunu hem OSX'de hem de Safari 5.1.7 ve Firefox 12'de test ettim.
Sitem Django kullanılarak oluşturuldu ve ben de geliştirme ve geliştirme kurulumlarında aynı sorunu yaşıyorum.
Ben formu yükleme oluşturmak için kullanıyorum tam kodu (jQuery kullanarak) aşağıda gösterilmiştir:
form.submit(function() {
// Compile the data.
var data = form.serializeArray();
data.splice(0, 0, {
name: "file",
value: form.find("#id_file").get(0).files[0]
});
// Create the form data.
var fd = new FormData();
$.each(data, function(_, item) {
fd.append(item.name, item.value);
});
// Submit the data.
var req = new XMLHttpRequest();
req.addEventListener("progress", function(event) {
if (event.lengthComputable) {
var percentComplete = Math.round(event.loaded * 100/event.total);
console.log(percentComplete);
}
}, false);
req.addEventListener("load", function(event) {
if (req.status == 200) {
var data = $.parseJSON(event.target.responseText);
if (data.success) {
console.log("It worked!")
} else {
console.log("It failed!")
}
} else {
console.log("It went really wrong!")
}
}, false);
req.addEventListener("error", function() {
console.log("It went really really wrong!")
}, false);
req.open("POST", "/my-bar/media/add/");
req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
req.send(fd);
// Don't really submit!
return false;
});
Bu konuda saatlerce olsam deliye oldum. Herhangi bir yardım takdir!
bu sorunla karşılaştı olacak. FormData() lengthComputable == false yapar gibi görünüyor. – est