首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery.ajax获取PHP脚本的进度

使用jQuery.ajax获取PHP脚本的进度
EN

Stack Overflow用户
提问于 2014-10-27 18:39:03
回答 2查看 2.5K关注 0票数 2

我正在使用jQuery的ajax来运行一个php脚本,如下所示:

代码语言:javascript
复制
jQuery.ajax({
    type: "POST",
    url: "my_php_script.php",
    success: function( response ) {
        console.log(response);
    },
    error: function(){
        console.log('error is...');
    }
});

my_php_script.php循环遍历数组,并在每个产品上运行一个函数:

代码语言:javascript
复制
$count = count($array);
$i = 0;
foreach ($array as $item) {
    myFunction($item);
    $i++;
    if($i == $count){
        echo json_encode('all done and a success');
    }
}

这一切工作,但脚本通常需要大约2-3分钟才能完成,所以我需要显示的进度为观众,而它运行。我该怎么做呢?

我可以通过添加以下内容获得循环的百分比

代码语言:javascript
复制
$percent = intval($i/$count * 100)."%";
echo json_encode($percent);

放入我的php循环,如下所示:

代码语言:javascript
复制
$count = count($array);
$i = 0;
foreach ($array as $item) {
    myFunction($item);

    $percent = intval($i/$count * 100)."%";
    echo json_encode($percent);

    $i++;
    if($i == $count){
        echo json_encode('all done and a success');
    }
}

但是如何在我的jQuery ajax调用中获得这个值呢?

EN

回答 2

Stack Overflow用户

发布于 2014-10-27 18:55:40

代码语言:javascript
复制
$.ajax({
    url: path,
    xhrFields: {
        onprogress: function (e) {

        }
    },
    success: function (response) {

    }
});

找到了这个例子,希望能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2014-10-28 18:46:02

通过在我的数组循环中将百分比写入到一个唯一命名的文本文件中,最终实现了这个功能:

代码语言:javascript
复制
$percent = intval($i/$count * 100)."%";
$_text = file_get_contents($_file);
$_text = $percent;
file_put_contents($_file, $_text);

然后在我的html页面中,我每隔2秒检查一次文件的内容,方法是:

代码语言:javascript
复制
jQuery.get('file.txt?'+new Date(), function(data) {
    console.log(data);
}, 'text');

我确信这不是最好的方法,但为了在有限的时间内让它工作,这是我能想到的所有方法。希望能对其他人有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26585665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档