进度条在 XMLHTTPRequest 中不起作用

     2023-02-24     151

关键词:

【中文标题】进度条在 XMLHTTPRequest 中不起作用【英文标题】:Progress bar does not work in XMLHTTPRequest 【发布时间】:2016-04-29 20:28:18 【问题描述】:

我想在 php 中上传图片但同时显示进度状态,在下面使用 XMLHttpRequest 的代码中,图片正在正确上传,但我看不到进度条在移动。

这是我的代码。请帮助解决我的问题。

<html>
<head>
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
   <style type="text/css">
   .progress 
    display: block;
    text-align: center;
    width: 0;
    height: 20px;
    background: red;
    transition: width .3s;

.progress.hide 
    opacity: 0;
    transition: opacity 1.3s;

   </style>
<script type="text/javascript">

$(document).ready(function()

$(document.body).on('click', '#button1' ,function(e)

var formData = new FormData($("#multiple_upload_form")[0]);
$.ajax(
    xhr: function () 
        var xhr = new window.XMLHttpRequest();
        xhr.upload.addEventListener("progress", function (evt) 
            if (evt.lengthComputable) 
                var percentComplete = evt.loaded / evt.total;
                alert("percentComplete"+percentComplete);
                console.log(percentComplete);
                $('.progress').css(
                    width: percentComplete * 100 + '%'
                );
                if (percentComplete === 1) 
                    $('.progress').addClass('hide');
                
            
        , false);
        xhr.addEventListener("progress", function (evt) 
            if (evt.lengthComputable) 
                var percentComplete = evt.loaded / evt.total;
                console.log(percentComplete);
                $('.progress').css(
                    width: percentComplete * 100 + '%'
                );
            
        , false);
        return xhr;
    ,
    type: 'POST',
    url: "ajax_upload.php",
    mimeType:"multipart/form-data", 
    data: formData,
    async : false,
    cache : false,
    contentType : false,
    processData:false,
    success: function (data)   alert("data"+data);  
);

);
);
</script>

</head>
<body>
<form method="post" enctype="multipart/form-data" id="multiple_upload_form">
<div class="progress"></div>
<input type="file" name="upload_f"/>
<input type="button" id="button1" name="button" value="submit"/>
</form>
</body>
</html>

ajax_upload.php

 <?php
 $output_dir = "upload/";
      $type="video";

      $fileName = $_FILES["upload_f"]["name"];
      $extn = pathinfo($fileName, PATHINFO_EXTENSION);

      if(move_uploaded_file($_FILES["upload_f"]["tmp_name"],$output_dir.$fileName))
      
        echo "1";

      
      else
      
        echo "0";

         

 ?>

【问题讨论】:

alert("percentComplete"+percentComplete);的结果? @AddWeb- 如果条件不进入控件,这就是为什么不显示警报的原因。请提供一些解决方案。 那你需要先检查:alert(evt.lengthComputable);在if语句之前。 @AddWeb- alert(xhr) 在 [object XMLHttpRequest] 之后打印 让我们continue this discussion in chat。 【参考方案1】:

你是上传文件异步的方式所以设置它为真。 这是您的解决方案代码:

JS 代码:

$(document).ready(function()

    $(document.body).on('click', '#button1' ,function(e)

        var formData = new FormData($("#multiple_upload_form")[0]);
        $.ajax(
            xhr: function () 
                var xhr = new window.XMLHttpRequest();
                xhr.upload.addEventListener("progress", function (evt) 
                    if (evt.lengthComputable) 
                        var percentComplete = evt.loaded / evt.total;
                        console.log(percentComplete);
                        $('.progress').css(
                            width: percentComplete * 100 + '%'
                        );
                        if (percentComplete === 1) 
                            $('.progress').addClass('hide');
                        
                    
                , true);
                xhr.addEventListener("progress", function (evt) 
                    if (evt.lengthComputable) 
                        var percentComplete = evt.loaded / evt.total;
                        console.log(percentComplete);
                        $('.progress').css(
                            width: percentComplete * 100 + '%'
                        );
                    
                , true);
                return xhr;
            ,
            type: 'POST',
            url: "ajax_upload.php",
            mimeType:"multipart/form-data", 
            data: formData,
            async : true,
            cache : false,
            contentType : false,
            processData:false,
            success: function (data)   alert("data"+data);  
        );

    );
);

希望对您有所帮助!

【讨论】:

自定义 CSS webkit 滚动条在 Firefox 浏览器中不起作用

】自定义CSSwebkit滚动条在Firefox浏览器中不起作用【英文标题】:CustomCSSwebkitscrollbarisnotworkinginFirefoxbrwoser【发布时间】:2018-03-2312:09:09【问题描述】:这是我的小提琴:SCROLLBAR在Chrome和Firefox浏览器中运行fiddle,点击“切换”按钮... 查看详情

extjs 5 网格的滚动条在边框布局面板中不起作用

】extjs5网格的滚动条在边框布局面板中不起作用【英文标题】:extjs5grid\'sscrollbardoesnotworkinborderlayoutpanel【发布时间】:2014-12-2307:54:04【问题描述】:在边框布局面板中,即使grid的存储时间长到足以让grid溢出,grid的滚动条也不... 查看详情

Cordova Async XMLHttpRequest().open 在 Android 中不起作用

】CordovaAsyncXMLHttpRequest().open在Android中不起作用【英文标题】:CordovaAsyncXMLHttpRequest().opendoesnotworkinAndroid【发布时间】:2017-05-1513:28:23【问题描述】:我正在尝试通过GET请求向我的应用服务器提交表单。但是我发现这是不可能的。... 查看详情

像寻求拖动视频进度条这样的视频控件在 HTML 中不起作用?

】像寻求拖动视频进度条这样的视频控件在HTML中不起作用?【英文标题】:VideocontrolslikeseekdraggingvideoprogressbarisnotworkinginHTML?【发布时间】:2021-08-0400:12:11【问题描述】:像寻找10秒视频进度条拖动这样的视频控件在HTML中不起作... 查看详情

进度可见性在列表视图页脚中不起作用

】进度可见性在列表视图页脚中不起作用【英文标题】:Progressvisibilitynotworkinginlistviewfooter【发布时间】:2015-10-2112:57:52【问题描述】:我在列表视图中使用分页,当用户向下滚动到列表视图末尾时,我在列表视图页脚中显示进... 查看详情

UIProgressView 跟踪和进度图像在 iOS7 中不起作用

】UIProgressView跟踪和进度图像在iOS7中不起作用【英文标题】:UIProgressViewtrackandprogressimagesnotworkinginiOS7【发布时间】:2014-02-2311:26:57【问题描述】:我有一个自定义的UIProgressView,其中包含进度和跟踪图像。我还自定义了进度视图... 查看详情

自定义自动播放进度条 - 动态宽度属性 - 在铬中不起作用

】自定义自动播放进度条-动态宽度属性-在铬中不起作用【英文标题】:Customautoplayprogressbar-dynamicwidthproperty-doesn\'tworkinchromium【发布时间】:2020-03-1723:21:56【问题描述】:我有一个用于音频播放标签的自定义进度bur,它可以动态... 查看详情

XHR + 数据 URI 在 Safari 中不起作用

...Safari【发布时间】:2015-09-0408:51:49【问题描述】:我使用XMLHttpRequest使用此代码从数据URI生成Blob:functiondataUrlToBlob(dataUrl,callback)varxhr=newXMLHttpRequest;xhr.open(\'GET\',dataUrl);xhr 查看详情

注释 CrossOrigin 在 Spring Boot 中不起作用

...端点发出请求,但它一直给我CORS问题:在以下位置访问XMLHttpRequest\'localhost:9090/helios-a 查看详情

带有 Angular 的动态宽度在 IE11 中不起作用

...时间】:2015-12-0301:03:49【问题描述】:我有一个显示上传进度的进度条。CSS适用于chrome,但不适用于IE<divclass="progress-bar"><divstyle="width:media.progress*0. 查看详情

水平滚动条在 Firefox 上不起作用

】水平滚动条在Firefox上不起作用【英文标题】:Horizontalscrollbardoesn\'tworkonfirefox【发布时间】:2022-01-1806:51:13【问题描述】:<divstyle="margin:0auto;width:150px;height:100px;display:flex;overflow-x:scroll;overflow-y:hidden;"><selectmultip 查看详情

AlertDialog setmessage 在 Asynctask 中不起作用

...的代码,我试图通过onProgressUpdate方法在Asyntask中显示我的进度,但它没有显示在警报对话框中。仅显示初始消息。classDownloadFileFromURLexte 查看详情

片段隐藏在Android中不起作用

...个主要活动,我想在单独的片段中显示图像和文本而不是进度条。我有一个单独的片段,我想在用户单击MainActivity中的按钮时显示该片段。我的问题是,当我启动应用程序时,默认情况下会显示片段。我希望仅在用户单击按钮时... 查看详情

带有 XMLHttpRequest 的 CORS 不起作用

】带有XMLHttpRequest的CORS不起作用【英文标题】:CORSwithXMLHttpRequestnotworking【发布时间】:2014-10-0710:05:28【问题描述】:我正在尝试使用XMLHttpRequest读取音频流,但收到错误消息“XMLHttpRequestcannotload.No\'Access-Control-Allow-Origin\'headerispr... 查看详情

并行文件上传 XMLHttpRequest 请求以及为啥它们不起作用

】并行文件上传XMLHttpRequest请求以及为啥它们不起作用【英文标题】:ParallelfileuploadXMLHttpRequestrequestsandwhytheywon\'twork并行文件上传XMLHttpRequest请求以及为什么它们不起作用【发布时间】:2018-12-0113:16:20【问题描述】:我正在尝试... 查看详情

在 XMLHttpRequest() 之后 PHP 定义不起作用

】在XMLHttpRequest()之后PHP定义不起作用【英文标题】:PHPdefinenotworkingafterXMLHttpRequest()【发布时间】:2021-06-0417:53:59【问题描述】:我需要使用PHP常量变量保护文件,并且只能通过index.php访问文件。我需要通过XMLHttpRequest请求获取... 查看详情

用逗号结束 python 2.7 打印语句在 tmux 中不起作用吗?

...个缓慢的进程,并希望通过打印循环变量来记录for循环的进度。print\'Progress...\',foriinrange(15):...pr 查看详情

SVG 圆的样式在 Firefox 中不起作用,浏览器删除了半径属性

...1-0405:03:46【问题描述】:我正在尝试使用SVG和CSS创建一种进度环,目前它在Chrome中有效。但是,Firefox(61.0.1(64位))给我带来了问题,并且没有显示我的圈子。我已经尝 查看详情