我有一个ajax控制器,它可以迭代一个循环。我想在此控制器进度之后更新进度条。
基本上,我只需要输出一个$('.bar').css('width', $percent . '%')
。
但所有这些输出都只是在函数完成后进行累积和发送。
如何在每次输出后更新条形图?
我已经尝试过flush()
和ob_flush()
。
Symfony是否使用其他缓冲区?
EDIT:输出javascript 的控制器的一部分
$total = count($results);
foreach ($results as $result) {
$count++;
echo '<script>$(''.bar'').css(''width'', ''' . (int)($count / $total * 100) . '%'');</script>';
}
您必须在长php操作中使用session-write-close()。
JS:
var isInProgress = false;
function veryLongImport()
{
isInProgress = true;
checkfx();
$.ajax({
type: "GET",
url: /myverylongueactionPath ,
async : true,
cache: false,
dataType:'html',
success: function(data){},
error: function(){ },
complete: function(){
isInProgress = false;
}
});
}
function checkfx()
{
if( isInProgress != false )
{
$.ajax({
type: "GET",
url: /mycheckpath ,
async : true,
cache: false,
dataType:'html',
success: function(data){
makeYourProgressBarGrowHere();
},
error: function(){ },
complete: function(){
checkfx();
}
});
} else { }
}
PHP控制器:
public function myVeryLongAction($id)
{
session_write_close();
... code ...
}
public function myCheckAction()
{
...code...
}