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