gpt4 book ai didi

javascript - jQuery、ajax .done 延迟触发?

转载 作者:行者123 更新时间:2023-11-28 08:05:31 24 4
gpt4 key购买 nike

有谁知道为什么:成功、完成、完成事件比“xhr.upload.addEventListener("load")”事件晚 5-10 秒触发?

什么是正确的事件?我不太清楚,正确的上传时间是哪个时间?

希望有人能帮助我:)

问候垫

$('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); });

});

最佳答案

这是因为您正在进行异步 AJAX 调用。 Ajax 从客户端发送请求,并且无需等待响应就开始执行 AJAX 调用代码语句之后编写的代码语句(在您的案例事件监听器中)。然后,一旦收到服务器的响应,它就会根据响应执行成功/失败方法。

(1.) Ajax 调用已发送-->(2.) AJAX调用后的语句(即事件监听器方法)被执行-->(3.)服务器最终响应AJAX调用-->(4.)执行AJAX调用的success方法

我建议您阅读本教程。 AJAX

关于javascript - jQuery、ajax .done 延迟触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24828300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com