PHP ob_end_与JQuery齐平
我对ob_implicit_flush with jquery有一个问题。我正在使用jqueryUI小部件选项卡来显示2个选项卡形式。在我的过程中,我正在打印ant任务的实时输出。其代码如下所示PHP ob_end_与JQuery齐平,php,jquery,Php,Jquery,我对ob_implicit_flush with jquery有一个问题。我正在使用jqueryUI小部件选项卡来显示2个选项卡形式。在我的过程中,我正在打印ant任务的实时输出。其代码如下所示 if (isset($cleaned)){ echo '<div id="ant">'; $json_arg = escapeshellarg($cleaned); while (@ob_end_flush()); ob_implicit_flush(true
if (isset($cleaned)){
echo '<div id="ant">';
$json_arg = escapeshellarg($cleaned);
while (@ob_end_flush());
ob_implicit_flush(true);
$proc = popen("sudo /var/www/html/scripts/set_vars.sh $json_arg 2>&1", 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 4096);
@ flush();
}
echo '</pre>';
echo '</div>';
echo '<script>';
echo 'setTimeout( function ( ) { alert( "Event Added!" ); }, 2000 );';
echo 'clearform();';
echo '</script>';
}
if(设置($cleaned)){
回声';
<?php
session_start();
$json_cleaned = $_SESSION['json_string'];
$json_arg = escapeshellarg($json_cleaned);
$proc = popen("sudo /var/www/html/scripts/set_vars.sh $json_arg 2>&1", 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 256);
@flush();
@ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(200);
}
pclose($proc);
echo '</pre>';
echo '<script>';
echo 'window.scrollTo(0,99999);';
echo 'setTimeout( function ( ) { alert( "Event Added!" ); }, 2000 );';
echo '</script>';
?>
$json_arg=escapeshellarg($cleaned);
而(@ob_end_flush());
ob_隐式_刷新(真);
$proc=popen(“sudo/var/www/html/scripts/set_vars.sh$json_arg 2>&1”,“r”);
回声';
<?php
session_start();
$json_cleaned = $_SESSION['json_string'];
$json_arg = escapeshellarg($json_cleaned);
$proc = popen("sudo /var/www/html/scripts/set_vars.sh $json_arg 2>&1", 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 256);
@flush();
@ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(200);
}
pclose($proc);
echo '</pre>';
echo '<script>';
echo 'window.scrollTo(0,99999);';
echo 'setTimeout( function ( ) { alert( "Event Added!" ); }, 2000 );';
echo '</script>';
?>
而(!feof($proc)){
echo-fread($proc,4096);
@冲洗();
}
回声';
<?php
session_start();
$json_cleaned = $_SESSION['json_string'];
$json_arg = escapeshellarg($json_cleaned);
$proc = popen("sudo /var/www/html/scripts/set_vars.sh $json_arg 2>&1", 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 256);
@flush();
@ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(200);
}
pclose($proc);
echo '</pre>';
echo '<script>';
echo 'window.scrollTo(0,99999);';
echo 'setTimeout( function ( ) { alert( "Event Added!" ); }, 2000 );';
echo '</script>';
?>
回声';
<?php
session_start();
$json_cleaned = $_SESSION['json_string'];
$json_arg = escapeshellarg($json_cleaned);
$proc = popen("sudo /var/www/html/scripts/set_vars.sh $json_arg 2>&1", 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 256);
@flush();
@ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(200);
}
pclose($proc);
echo '</pre>';
echo '<script>';
echo 'window.scrollTo(0,99999);';
echo 'setTimeout( function ( ) { alert( "Event Added!" ); }, 2000 );';
echo '</script>';
?>
回声';
<?php
session_start();
$json_cleaned = $_SESSION['json_string'];
$json_arg = escapeshellarg($json_cleaned);
$proc = popen("sudo /var/www/html/scripts/set_vars.sh $json_arg 2>&1", 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 256);
@flush();
@ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(200);
}
pclose($proc);
echo '</pre>';
echo '<script>';
echo 'window.scrollTo(0,99999);';
echo 'setTimeout( function ( ) { alert( "Event Added!" ); }, 2000 );';
echo '</script>';
?>
echo'setTimeout(函数(){alert(“Event Added!”);},2000);
<?php
session_start();
$json_cleaned = $_SESSION['json_string'];
$json_arg = escapeshellarg($json_cleaned);
$proc = popen("sudo /var/www/html/scripts/set_vars.sh $json_arg 2>&1", 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 256);
@flush();
@ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(200);
}
pclose($proc);
echo '</pre>';
echo '<script>';
echo 'window.scrollTo(0,99999);';
echo 'setTimeout( function ( ) { alert( "Event Added!" ); }, 2000 );';
echo '</script>';
?>
回显“clearform();”;
<?php
session_start();
$json_cleaned = $_SESSION['json_string'];
$json_arg = escapeshellarg($json_cleaned);
$proc = popen("sudo /var/www/html/scripts/set_vars.sh $json_arg 2>&1", 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 256);
@flush();
@ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(200);
}
pclose($proc);
echo '</pre>';
echo '<script>';
echo 'window.scrollTo(0,99999);';
echo 'setTimeout( function ( ) { alert( "Event Added!" ); }, 2000 );';
echo '</script>';
?>
回声';
<?php
session_start();
$json_cleaned = $_SESSION['json_string'];
$json_arg = escapeshellarg($json_cleaned);
$proc = popen("sudo /var/www/html/scripts/set_vars.sh $json_arg 2>&1", 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 256);
@flush();
@ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(200);
}
pclose($proc);
echo '</pre>';
echo '<script>';
echo 'window.scrollTo(0,99999);';
echo 'setTimeout( function ( ) { alert( "Event Added!" ); }, 2000 );';
echo '</script>';
?>
}
它可以正常工作,但是当调用ob_end_flush时,所有表单样式也会被刷新(由jquery创建)。任务完成后,样式返回。有人知道在这个任务运行时如何避免jquery吗
谢谢
编辑:
这是完整的代码
<html>
<head>
<link rel="stylesheet" href="css/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<script src="scripts/jquery-ui.min.js"></script>
<script src="scripts/jquery-ui.js"></script>
<script language="javascript">
function clearform() {
document.getElementById("json").value="";
}
</script>
<script>
$(function() {
$( "#tabs" ).tabs();
});
</script>
<title>Add Manual Event Data</title>
<?php
if (empty($_POST["comment"])) {
$comment = "";
}
else {
$cleaned = test_input($_POST["comment"]);
$comment = ($_POST["comment"]);
}
function test_input($data) {
$data = trim($data);
$data = addslashes($data);
return $data;
}
?>
</head>
<body>
<div id="tabs" class="body-check">
<ul>
<li><a href="#tabs-1">Event By String</a></li>
<li><a href="#tabs-2">Add Event Form</a></li>
</ul>
<div id="tabs-1">
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<center><h1>Add Event Data:</h1></center>
<p>
<textarea id="json" name="comment"><?php echo $comment;?></textarea>
</p>
<input type="submit" name="submit" value="Submit">
</form>
<?php
if (isset($cleaned)){
session_start();
$_SESSION['json_string'] = $cleaned;
echo '<div id="ant"><iframe src="ant.php"></iframe></div>';
echo '<script>clearform();</script>';
}
?>
</div>
<div id="tabs-2">
<h1>Hello!</h2>
</div>
</div>
</body>
</html>
函数clearform(){
document.getElementById(“json”).value=“”;
}
$(函数(){
$(“#制表符”).tabs();
});
添加手动事件数据
我就是这样解决这个问题的。我创建了一个名为ant.php的文件,然后在iFrame中调用它。这样,ob_刷新不会影响父脚本
index.php
函数clearform(){
document.getElementById(“json”).value=“”;
}
$(函数(){
$(“#制表符”).tabs();
});
添加手动事件数据
你好
ant.php
你能把jqui代码包括进来吗?据我所知,while(@ob_end_flush());结束所有活动输出缓冲区,并允许将其发送到屏幕。如果没有它,我的输出在任务完成之前不会打印,所以我假设(我不是php专家,请原谅)它在接收输出时会转储输出。好的,不用担心,它确实在上的文档中显示了这一点,所以我唯一的假设是jquery也正在刷新。也许为了加载这些消息,您应该将此php代码放在另一个页面中,并让jquery对该页面进行ajax调用。