jQuery,ajax .done被解雇了?

时间:2014-07-18 15:09:05

标签: javascript jquery ajax

有没有人知道为什么: 成功,完成和完成 事件比“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); });

});

1 个答案:

答案 0 :(得分:0)

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

(1。)发送Ajax调用 的 - &GT; (2.)执行AJAX调用(即eventlistener方法)后的语句 的 - &GT; (3.)服务器最终响应AJAX调用 的 - &GT; (4.)执行AJAX调用的成功方法

我建议你阅读本教程。 AJAX