这里的问题很少。
我有一个通过AJAX调用的php函数,如下所示:
CREATE FUNCTION CountClientProductDistributions(@ClientID INT)
RETURNS INT
AS
BEGIN
RETURN (SELECT COUNT(1) FROM dbo.Suplier WHERE ClientID = @ClientID AND ProductDistribution = 1)
END
GO
ALTER TABLE dbo.Suplier
ADD CONSTRAINT Suplier_CheckClientProductDistribution CHECK (dbo.CountClientProductDistributions(ClientID) <= 1);
GO
我正试图获得“实时日志”回声。在每个步骤之前的含义,回声应该一步一步地输出到Log区域。所以用户知道发生了什么。
但问题是,在过程中没有出现日志,它只是在过程结束时填写整个文本。其他一切都很好。 Log只是在运行时没有出现,但在功能完成后它出现在正确的位置。
我的AJAX电话:
function processActiveDirectory(){
$var = new GetLDAPUsers;
echo "Getting Users from Active Directory.... <br />";
$adusers = $var->getAllUsers();
echo "setting up images.... <br />";
// processing more stuff
echo "finished";
}
这是它的构建方式:
修改
除了这个thread我已经在使用ajax调用之外,调用该函数。它在被调用的函数中,我正在回应... ...
修改2
我正在使用wordpress
抱歉,由于企业限制,我无法提供更多信息。
答案 0 :(得分:2)
这是对您需求的简短概述。请进一步发展这个想法。
这使用两个AJAX调用 - 一个用于主进程,另一个用于进程:
<强>脚本:强>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
//Start the main process
$.ajax({
url: 'main.php',
success: function(data) {
}
});
function getProgress(){
$.ajax({
url: 'progress.php',
success: function(data) {
$("#progress").html(data);
if(data != "finished"){
getProgress();
}
}
});
}
//Start the progress section
getProgress();
</script>
<div id="progress"></div>
<强> main.php 强>
<?php
$arr = ['Getting Users from Active Directory....','setting up images....','finished'];
foreach($arr as $value) {
session_start();
$_SESSION["progress"]=$value;
session_write_close();
sleep(1);
}
<强> progress.php 强>
<?php
session_start();
sleep(1);
echo $_SESSION["progress"];
因此processActiveDirectory
将归Main.php
所有,且echo应替换为SESSION
变量
答案 1 :(得分:0)
我认为在使用AJAX的LOG过程中没有必要。 AJAX太重了,如果你想要它可能是一个糟糕的设计。最好使用网络套接字或不使用