xmlhttprequest获取TransferEncoding:chunked分时编码输出

问题:

<?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且返回数据不为空的时候就可以获取到分时第一步输出内容了。

原文地址:https://www.cnblogs.com/zaric/p/2529883.html