有没有人知道为什么: 成功,完成和完成 事件比“xhr.upload.addEventListener(”load“)”事件晚了5-10秒?
什么是正确的事件? iam不舒服,哪个时候上传时间正确?
希望,有人可以帮助我:)。招呼 垫
$('body').on('change', '#fileUploader', function() {
// Post-Daten vorbereiten
//var data = new FormData();
//data.append('file', this.files[0]);
var xhr = new XMLHttpRequest();
var data = new FormData();
var files = $("#fileUploader").get(0).files;
for (var i = 0; i < files.length; i++) {
data.append(files[i].name, files[i]);
}
// Ajax-Call
$.ajax({
url: '<?=$this->language->modulLink('Upload/DoUpload');?>',
data: data,
type: 'POST',
cache: false,
processData: false,
contentType: false,
success: function() {
console.log("JETZT");
},
complete: function(){
console.log( "action finished" );
},
xhr: function() {
var xhr = $.ajaxSettings.xhr();
xhr.upload.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
console.log(percentComplete + ' :: ' + evt.loaded + ' :: ' + evt.total);
//Do something with upload progress here
}
}, false);
xhr.upload.addEventListener("load", function(evt) {
console.log("rdy");
}, false);
return xhr;
},
}).done(function(d) { console.log(d); });
});
答案 0 :(得分:0)
这是因为您正在进行异步的AJAX调用。 Ajax从客户端发送请求,而不等待响应开始执行AJAX调用代码语句之后编写的代码语句(在您的情况下为事件侦听器)。然后,一旦它从服务器收到响应,它就会根据响应执行成功/失败方法。
(1。)发送Ajax调用 的 - &GT; 强> (2.)执行AJAX调用(即eventlistener方法)后的语句 的 - &GT; 强> (3.)服务器最终响应AJAX调用 的 - &GT; 强> (4.)执行AJAX调用的成功方法
我建议你阅读本教程。 AJAX