php脚本通过ajax运行时显示进度条

Posted

技术标签:

【中文标题】php脚本通过ajax运行时显示进度条【英文标题】:Display progress bar while the php script is running through ajax 【发布时间】:2016-03-19 14:22:39 【问题描述】:

我有一个通过 ajax 向服务器提交值的表单。

<form>
<input id="titlee" name="titlee">
<input type="file" name="fileToUpload" id="fileToUpload">
<button  type="submit" value="submit" id="submit" name="submit">Start</button>
<div class="progress"></div>
</form>

脚本

<script type="text/javascript">
$(function() 
    
        $("#submit").click(function() 
            
                var titlee = $("#titlee").val();
                var fileToUpload= $("#fileToUpload").val();

                var dataString = 'titlee='+ titlee + '&fileToUpload=' + fileToUpload;

                $.ajax(
                    
                        type: "POST",
                        url: "c_insert_test.php",
                        data: dataString,
                        success: function()
                    );

                return false;
            );
    );
</script>

c_insert_test.php

   <?php
    $titlee = $_POST['titlee'];
    $target_dir = "reqdoc/";
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

    $new_filename = $target_dir . uniqid() . '.' . $imageFileType;
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $new_filename))
           
            $filee = $new_filename;
            // insert query to insert the image path and other parameters in the table
        
    else
        
            echo "false";
        
     ?>

对于进度条,我在这里有代码at this jsfiddle

我希望在参数和图像通过表单上传到服务器时显示一个进度条。但是我无法将进度条与 ajax 合并,谁能告诉我如何合并这两个代码,以便我可以显示进度条并将图像上传到服务器文件夹

【问题讨论】:

这将帮助你更多phppot.com/jquery/jquery-progress-bar-for-php-ajax-file-upload 另外***.com/questions/22502943/… 会帮助你。 【参考方案1】:

我会给你方法 What is the cleanest way to get the progress of JQuery ajax request?

JQuery

$(function() 

    $("#submit").click(function() 
    
        var titlee = $("#titlee").val();
        var wtag = $("#wtag").val();

        var dataString = 'titlee='+ titlee + '&wtag=' + wtag ;

        $.ajax(
            xhr: function () 
                var xhr = new window.XMLHttpRequest();
                xhr.upload.addEventListener("progress", function (evt) 
                    if (evt.lengthComputable) 
                        if (evt.lengthComputable) 
                            var percentComplete = evt.loaded / evt.total;
                            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: "c_insert_test.php",
            data: dataString,
            success: function (data) 
                //Do something on success
            
        );

        return false;
    );
);

CSS

.progress 
    display: block;
    text-align: center;
    width: 0;
    height: 3px;
    background: red;
    transition: width .3s;

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

这可能是一个合适的解决方案。

【讨论】:

我试过你的代码,但没有显示 preogress 栏。 你必须按照这个来放置css。这是仅用于跟踪 ajax 进度的代码。 请检查我是否包含 css 以及它的实现。 我应用了 css 但仍然无法显示栏。我也更新了帖子,如果你能再看一遍将不胜感激 可能是其他问题。检查 console.log(percentComplete);你明白了吗?如果你得到这个,那么显示问题意味着 css。

以上是关于php脚本通过ajax运行时显示进度条的主要内容,如果未能解决你的问题,请参考以下文章

如何在加载时显示进度条,使用ajax

AJAX 进度条 - 轮询,彗星?

C# 绑定Datagridview时显示进度条

运行代码时显示进度对话框的问题

ajax - 执行 php 脚本和数据验证时出错 - 如何解决?

Python读取大文件时显示彩色进度条(rich)