XMLHttpRequest.upload.addEventListener("progress"... not working

10,188

You are uploading the file synchronously, try changing the open() call to

 ajax.open("POST", "mod/intern/uploader_upload_done.php", true);
Share:
10,188
Christian Graf
Author by

Christian Graf

Updated on June 22, 2022

Comments

  • Christian Graf
    Christian Graf almost 2 years

    I try to populate an upload bar by calling XMLHttpRequest.upload.addEventListener("progress", progressHandler, false);. Apparently my function progressHandler is not called at all. I do not have a clue, why.

    Everything else works fine, e.g. the call of completeHandler, after the file is completely uploaded. The upload of my testfile takes approx. 15 secs, so I would expect progressHandler to be called.

    Maybe someone can help me?

        var formdata = new FormData();
        formdata.append("uploadfilename", file);
        formdata.append("inte", ticketid);
        formdata.append("username", userName);
        formdata.append("custname", custName);
        formdata.append("userlastname", userLastName);
        formdata.append("par", par);
        formdata.append("mod", mod);
    
        var ajax = new XMLHttpRequest();
        ajax.upload.addEventListener("progress", progressHandler, false); 
        ajax.addEventListener("load", completeHandler, false);
        ajax.addEventListener("error", errorHandler, false);
        ajax.addEventListener("abort", abortHandler, false);
        ajax.open("POST", "mod/intern/uploader_upload_done.php", false);
        ajax.send(formdata);
    
        var response = JSON.parse(ajax.responseText);
        // parsing response
        ....
    
    
        function progressHandler(event)
        {
           var percent = 100 *(event.loaded / event.total);
           _("fortschritt").value = Math.round(percent);
           _("fortschritt_txt").innerHTML = Math.round(percent)+"% done...";
        }
    
    
        function completeHandler(event)
        { 
          _("fortschritt_txt").innerHTML = event.target.responseText;
          _("fortschritt").value = 100;
         _("ticketid").value = '';
       }
    
    
       function errorHandler(event)
       { 
          _("fortschritt_txt").innerHTML = "Upload failed";
       } 
    
    
        function abortHandler(event)
        {
          _("fortschritt_txt").innerHTML = "Upload cancelled";
        }
    
    • codebox
      codebox over 8 years
      Are you sure that this is supported in the browser you are using?