如果ajax post的接收者是这样的:
// process/te_bulk.php
$jsonList = '[{"AV"},{"QT"}]';
echo $jsonList;
sleep ( 5 ) // or, continue curl request for jsonList variable 1
$jsonArray = '[{"1","15","JOG"},{"2","20","RUN"}]';
echo $jsonArray;
sleep ( 4 ) // or, continue curl request for jsonList variable 2
$jsonArray = '[{"1","25","SWIM"},{"2","30","BIKE"}]';
echo $jsonArray;
首次尝试 - 延迟XHR加载5秒钟,两个字符串同时附加,,这会导致“无效的JSON”:
$.ajax({
type: "POST",
url: "process/te_bulk.php",
contentType: "application/json; charset=utf-8",
data: { user: "12345" }
}).success(function( msg ) {
var string = jQuery.parseJSON(msg);
alert( "Data Returned: "+string );
});
.post()或.ajax()可以分别响应每个回声吗?在浏览器中加载页面进程/ te_bulk.php给出5& 4秒延迟。换句话说,如何在数据可用时填充页面,而不是在te_bulk.php完成处理时接收所有数据。
另一种方法似乎是:有2个.ajax()函数,一个用于接收第一个字符串,根据需要处理和调用第二个函数,用于$ jsonArray数据。
如果无法做到这一点,是否还有另一种简单的方法来显示获得数据的“进度”指标?
答案 0 :(得分:1)
echo不会向客户端返回任何内容,因此上面的示例代码将无法执行您想要的操作。如果要异步加载页面的某些部分,则必须对每个部分使用单独的ajax调用。
请参阅下面的Kevin的评论,因为缓冲区可能会通过请求部分刷新到客户端。
答案 1 :(得分:0)
当readystate为4时,Ajax才会进入“完成”状态。如果要刷新缓冲区(将任何已返回的内容发送到浏览器),内容将被发送到浏览器,但是, > jQuery不会解析它,直到readystate变为4 。
考虑到最后一部分,如果您仍想继续这样做,请检查是否正在使用来自ajax reqeust的内容更新responseText,因为它正在被刷新。
您必须更新php以在每条记录后刷新缓冲区。