Javascript 使用Ajax的PHP刷新循环
很抱歉重复了问题,但给出的答案不适用于我 到目前为止,我使用Ajax在单击按钮后执行PHP,并逐个刷新echo()。然而,我看到我的回声一下子就来了。下面是我的代码: PHP:Javascript 使用Ajax的PHP刷新循环,javascript,php,ajax,Javascript,Php,Ajax,很抱歉重复了问题,但给出的答案不适用于我 到目前为止,我使用Ajax在单击按钮后执行PHP,并逐个刷新echo()。然而,我看到我的回声一下子就来了。下面是我的代码: PHP: ob_start(); echo“服务器从用户处收到此信息:”$调试模式。“”; echo“服务器回答此问题:”; ob_flush(); 对于($i=1;$i) 阿贾克斯: 函数runAjax(调试模式) { 如果(调试模式==“”) { document.getElementById(“outputPhp”).
ob_start();
echo“服务器从用户处收到此信息:”$调试模式。“
”;
echo“服务器回答此问题:
”;
ob_flush();
对于($i=1;$i)
阿贾克斯:
函数runAjax(调试模式)
{
如果(调试模式==“”)
{
document.getElementById(“outputPhp”).innerHTML=“未向服务器发送任何内容”;
返回;
}
if(window.XMLHttpRequest)
{
//AJAX与IE7+、Chrome、Firefox、Safari、Opera一起使用
xmlhttp=新的XMLHttpRequest();
}
其他的
{
//AJAX与IE6、IE5的配合使用
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“outputPhp”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“TestButtonClick.php?q=“+debugMode,true”);
xmlhttp.send();
}
调试
单击此按钮运行所有测试
谢谢你的帮助!
彼得
我会帮你的
并且,您将“xmlhttp.readyState==4”修改为“xmlhttp.readyState==3”您是否检查了PHP代码在执行时是否显示了输出?如果是,那么您可以关注JavaScript.PHP代码在调用自身时不会刷新。我想我必须查看PHP代码。感谢您的提示。在您睡眠后,它应该会立即出现在php代码中,您必须从php文件中删除for循环,只需
echo(“Hello World”$i.“
”;
。从ajax发送$i
参数,并使用javascript设置睡眠时间,即以0.2s延迟调用ajax 10次,只需在ob flush();
之后使用echo
并删除ob start()
和ob_end_flush();
谢谢。有趣的是:我在开始时需要ob_implicit_flush();在每次echo()之后需要ob_flush();但现在它工作了。我还需要(xmlhttp.readyState==4 | | xmlhttp.readyState==3),否则我最后的echo就不会显示了。
ob_start();
echo "Server received this information from user: ". $debugMode. "<br>";
echo "Server answers this: <br>";
ob_flush();
for ($i = 1; $i <= 10; $i++)
{
echo( "Hello World ". $i. "<br>" );
ob_flush();
usleep(200000); //wait 0.2 seconds
}
ob_end_flush();
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
function runAjax(debugMode)
{
if (debugMode=="")
{
document.getElementById("outputPhp").innerHTML="nothing was send to server";
return;
}
if (window.XMLHttpRequest)
{
// AJAX use with IE7+, Chrome, Firefox, Safari, Opera
xmlhttp=new XMLHttpRequest();
}
else
{
// AJAX use with IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("outputPhp").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","TestButtonClick.php?q="+debugMode,true);
xmlhttp.send();
}
</script>
<title>Debug</title>
</head>
<body>
<br>
<input type="button" size="10" value="test"
onclick="runAjax(this.value)"/>
<span id="test">Click this button to run all tests</span>
<br>
<br>
<p id="outputPhp"></p>
<br>
</body>
</html>