.ajax()可以处理多个返回值,相隔几秒钟?

时间:2013-04-08 15:00:21

标签: jquery ajax

如果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数据。

如果无法做到这一点,是否还有另一种简单的方法来显示获得数据的“进度”指标?

2 个答案:

答案 0 :(得分:1)

echo不会向客户端返回任何内容,因此上面的示例代码将无法执行您想要的操作。如果要异步加载页面的某些部分,则必须对每个部分使用单独的ajax调用。

请参阅下面的Kevin的评论,因为缓冲区可能会通过请求部分刷新到客户端。

答案 1 :(得分:0)

当readystate为4时,Ajax才会进入“完成”状态。如果要刷新缓冲区(将任何已返回的内容发送到浏览器),内容将被发送到浏览器,但是, > jQuery不会解析它,直到readystate变为4

考虑到最后一部分,如果您仍想继续这样做,请检查是否正在使用来自ajax reqeust的内容更新responseText,因为它正在被刷新。

您必须更新php以在每条记录后刷新缓冲区。