簡體   English   中英

jQuery,ajax .done被解雇了嗎?

[英]jQuery, ajax .done fired late?

有誰知道為什么:“ 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調用后的語句(即eventlistener方法) -> (3.)服務器最終響應AJAX調用-> (4.)成功的方法AJAX調用已執行

我建議您閱讀本教程。 AJAX

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM