Javascript 无法通过ajax读取ob_flush()
我有一段代码,每当我单击按钮时,我都会对某个文件发出AJAX请求,请求如下:Javascript 无法通过ajax读取ob_flush(),javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一段代码,每当我单击按钮时,我都会对某个文件发出AJAX请求,请求如下: $("#syncDNS").click(function(){ $('#status').html(""); $('#status').addClass('loading'); function updateProgress(){ $.ajax({ type: 'POST', url: 'index.php',
$("#syncDNS").click(function(){
$('#status').html("");
$('#status').addClass('loading');
function updateProgress(){
$.ajax({
type: 'POST',
url: 'index.php',
success: function(data){
$('#status').html(data);
}
});
}
$.ajax({
url: 'index.php?action=sync',
success: function (response) {
clearInterval(loop);
$('#status').removeClass('loading');
if(response){
$('#status').addClass('alert alert-warning').html("<h4>Aviso</h4>" + response);
}else{
$('#status').addClass('alert alert-success').html("<h4>Sucesso</h4>" + "DNS sincronizado com sucesso!");
}
}
});
updateProgress();
var loop = setInterval(function () {
updateProgress();
}, 1000);
});
在索引中,我包含了我的控制文件并调用了PHP函数,该PHP函数是一个循环,我在其中向数据库添加了一些条目:
public function syncDNS(){
...
foreach($result as $row) {
$current ++;
echo($current);
...
}
...
return $string;
}
问题是,请求按预期工作,PHP函数也在做它的工作,我就是不能在syncDNS函数中听到回声,为什么?我还尝试使用ob_start()、ob_flush()、flush(),但没有任何效果。
据我所知,控制文件包含在索引中,因此任何在索引中回响的内容都应该可以通过AJAX POST请求获得。在浏览器中调用php文件时,您是否看到回响?否,无论是在请求的响应中还是在页面中。然后将AJAX放在一边,集中精力调试php部分。$result是否包含任何行并执行foreach循环?是否涉及PHP会话,使用文件系统作为会话存储?那么这可能是会话文件写锁阻止并发请求的“典型”情况,解决方案是在长时间运行的脚本中尽快调用
session\u write\u close
,当我返回最后一个变量时,所有的回声都会随之返回。我没有使用PHP会话。当在浏览器中调用PHP文件时,您是否看到echos?没有,无论是在请求的响应中还是在页面中。然后将ajax放在一边,专注于调试PHP部分。$result是否包含任何行并执行foreach循环?是否涉及PHP会话,使用文件系统作为会话存储?那么这可能是会话文件写锁阻止并发请求的“典型”情况,解决方案是在长时间运行的脚本中尽快调用session\u write\u close
,当我返回最后一个变量时,所有的回声都会随之返回。我没有使用PHP会话。
public function syncDNS(){
...
foreach($result as $row) {
$current ++;
echo($current);
...
}
...
return $string;
}