问题:
<?php
$output = '第一部分<br>';
while( strlen($output) < 1024) { //chrome下小于1KB会缓存,无分时效果。
$output .= " ";
}
echo $output;
ob_flush();
flush();
sleep(3);
echo "第二部分";
这段代码浏览器正常:先输出“第一部分”,等待3秒,输出追加“第二部分”。分时输出。Ajax下则等待所有输出准备完毕才一同输出。请问jQuery.ajax不支持chunked。还是其他什么原因?
直接从jQuery.ajax回调success获取的是响应为200时的完成返回。
而我要捕获的不是这些东西。看看xmlhttprequest种状态码,参考:w3schoole XMLHttpRequest 。
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200 && isDone == false)
{
submitCallBack(xmlhttp.responseText);
isDone = true;
}
else if(xmlhttp.readyState == 3 && isDone == false){
if(xmlhttp.responseText.length > 0)
{
submitCallBack(xmlhttp.responseText);
isDone = true;
}
}
}
这样在readyState为3且返回数据不为空的时候就可以获取到分时第一步输出内容了。