有谁知道为什么:成功、完成和完成的事件比"xhr.upload.addEventListener("load")“事件晚5-10秒触发?
什么是正确的事件?我不是shure,什么时候才是正确的上传时间?
希望有人能帮我:)
问候paD
$('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); });});
发布于 2014-07-18 15:18:18
这是因为您正在进行AJAX调用,这是异步。Ajax从客户端发送请求,无需等待响应就开始执行在AJAX调用代码语句之后编写的代码语句(在您的例子中是事件侦听器)。然后,一旦它从服务器接收到响应,它将根据响应执行成功/失败方法。
(1.)Ajax调用发送给-> (2.)AJAX调用后的语句(即事件侦听器方法)执行->(3)。服务器最终响应AJAX调用--> (4.)执行AJAX调用的成功方法
我建议你阅读本教程。阿贾克斯
https://stackoverflow.com/questions/24828300
复制相似问题