我正在使用jQuery的ajax来运行以下的PHP脚本:
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
遍历一个数组,并在每个产品上运行一个函数:
$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分钟才能完成,因此我需要在观看者运行时显示进度。我怎么能这样做?
我可以通过添加
来获得循环的百分比$percent = intval($i/$count * 100)."%";
echo json_encode($percent);
进入我的php循环:
$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调用中获得此值?
答案 0 :(得分:1)
$.ajax({
url: path,
xhrFields: {
onprogress: function (e) {
}
},
success: function (response) {
}
});
发现这个例子希望它有所帮助。
答案 1 :(得分:0)
最后通过在一个唯一命名的文本文件中写入百分比来实现这一点,就像在我的数组循环中一样:
$percent = intval($i/$count * 100)."%";
$_text = file_get_contents($_file);
$_text = $percent;
file_put_contents($_file, $_text);
然后在我的html页面中,我每隔2秒检查一次文件的内容:
jQuery.get('file.txt?'+new Date(), function(data) {
console.log(data);
}, 'text');
我确定这不是最佳方式,但要在有限的时间内完成这项工作,我能想到的就是这一切。希望它可以帮助其他人