Javascript PHP如何在HTML代码中刷新ProgressBar?

Javascript PHP如何在HTML代码中刷新ProgressBar?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我在index.html中有一个表单,在提交时调用jQuery函数。 此jQuery函数执行AJAX请求以运行PHP脚本 我希望PHP脚本与HTML交互(目标是刷新进度条) 我的问题是,在使用AJAX运行PHP脚本时,它是在后台执行的。事实上,我不想在PHP处理过程中刷新页面 我画了一幅画。 我怎样才能做到这一点呢?我想你的意思是进度条应该通过上传过程来填充。你可以这样做 $.ajax({ xhr: function() { var xhr = new window.X

我在index.html中有一个表单,在提交时调用jQuery函数。 此jQuery函数执行AJAX请求以运行PHP脚本

我希望PHP脚本与HTML交互(目标是刷新进度条)

我的问题是,在使用AJAX运行PHP脚本时,它是在后台执行的。事实上,我不想在PHP处理过程中刷新页面

我画了一幅画。


我怎样才能做到这一点呢?

我想你的意思是进度条应该通过上传过程来填充。你可以这样做

$.ajax({
    xhr: function() {
        var xhr = new window.XMLHttpRequest();

        // Upload progress
        xhr.upload.addEventListener("progress", function(evt){
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total;
                $('#progress').text(percentComplete + '%').css('width', percentComplete + '%');
            }
       }, false);

       // Download progress
       xhr.addEventListener("progress", function(evt){
           if (evt.lengthComputable) {
               var percentComplete = evt.loaded / evt.total;
               $('#progress').text(percentComplete + '%').css('width', percentComplete + '%');
           }
       }, false);

       return xhr;
    },
    type: 'POST',
    url: "/",
    data: {},
    success: function(data){
        // Do something success-ish
    }
});

我想你的意思是进度条应该通过上传过程来填充。你可以这样做

$.ajax({
    xhr: function() {
        var xhr = new window.XMLHttpRequest();

        // Upload progress
        xhr.upload.addEventListener("progress", function(evt){
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total;
                $('#progress').text(percentComplete + '%').css('width', percentComplete + '%');
            }
       }, false);

       // Download progress
       xhr.addEventListener("progress", function(evt){
           if (evt.lengthComputable) {
               var percentComplete = evt.loaded / evt.total;
               $('#progress').text(percentComplete + '%').css('width', percentComplete + '%');
           }
       }, false);

       return xhr;
    },
    type: 'POST',
    url: "/",
    data: {},
    success: function(data){
        // Do something success-ish
    }
});


您是否有机会上传文件?请提供有关进度条的信息。进度条的用途是什么?PHP代码是在服务器上执行的(所以在它到达浏览器之前)。它不能告诉你的浏览器在移动中做任何事情,因为它已经生成了一次,仅此而已。您可以将进度存储在服务器上,然后重试。看到这里:@kau_lin Yes到PHP进程结束时,我向用户上传了一个PNG文件。您可以从
PHP
AJAX
的成功回调发送
json
响应,并更新前端部分的progressbar,不是像你现在这样在
PHP
中。你是否有机会上传文件?提供有关进度条的信息。进度条的用途是什么?PHP代码是在服务器上执行的(所以在它到达浏览器之前)。它不能告诉你的浏览器在移动中做任何事情,因为它已经生成了一次,仅此而已。您可以将进度存储在服务器上,然后重试。看到这里:@kau_lin Yes到PHP进程结束时,我向用户上传了一个PNG文件。您可以从
PHP
AJAX
的成功回调发送
json
响应,并更新前端部分的progressbar,不是像你现在这样在
PHP
中。那么PHP如何在你的脚本中告诉pourcentage呢?它将在不使用PHP的情况下工作,因为我认为这些数据将通过请求发送。您可以在这里获得更多信息是的,但在我的情况下,我没有上传文件,我将URL传递给PHP,然后等待它返回进程的进度。“让一个单独的AJAX请求反复检查日志文件,以获取脚本的当前状态”->,这不是有点重吗?抱歉,我误解了您。因此,在这种情况下,您可以在curl过程中保存会话中进程的百分比。然后可以使用ajax从会话中获取这些信息。但我不知道是否有一个“更干净”的解决方案,以及PHP如何在脚本中告诉pourcentage?它将在不使用PHP的情况下工作,因为我认为这些数据将通过请求发送。您可以在这里获得更多信息是的,但在我的情况下,我没有上传文件,我将URL传递给PHP,然后等待它返回进程的进度。“让一个单独的AJAX请求反复检查日志文件,以获取脚本的当前状态”->,这不是有点重吗?抱歉,我误解了您。因此,在这种情况下,您可以在curl过程中保存会话中进程的百分比。然后可以使用ajax从会话中获取这些信息。但我不知道是否有“更清洁”的解决方案