首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery,ajax .done被炒得很晚?

jQuery,ajax .done被炒得很晚?
EN

Stack Overflow用户
提问于 2014-07-18 15:09:04
回答 1查看 630关注 0票数 1

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

什么是正确的事件?我不是shure,什么时候才是正确的上传时间?

希望有人能帮我:)

问候paD

代码语言:javascript
复制
$('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); });

});

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-18 15:18:18

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

(1.)Ajax调用发送给-> (2.)AJAX调用后的语句(即事件侦听器方法)执行->(3)。服务器最终响应AJAX调用--> (4.)执行AJAX调用的成功方法

我建议你阅读本教程。阿贾克斯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24828300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档