在HTML上发布递归的ajax调用数据(Angularjs)

时间:2015-12-03 05:07:51

标签: html angularjs asynchronous

我正在进行递归ajax调用和接收服务器数据。对于每次通话,我都会收到一些数据。我想在前端显示这些数据。我如何这样做,使每个收到的数据部分都在另一个之下。我希望这很清楚。

例如

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

假设我在第一次ajax调用时接收前10行,接下来接下来5次,依此类推,我想显示如上所示,而不是擦除第一个接收数据并显示第二个接收数据。顺便说一下,我使用Angularjs作为前端。

在Gaurav请求中添加了代码段。

callOnReq(requestId);
            function callOnReq(requestId) {
                    console.log('Request ID sent')
                    $http.post('/py/recvData',{'requestId':requestId}).
                        success(function(data, status, headers, config) {
                            console.log('Data after request ID')
                            $scope.recdData data.output;
                            if (data.output != ""){
                                callOnReq(requestId);
                            }else if (data.output == ""){
                                console.log('Data receiving over');
                            }
                        }).
                        error(function(data, status, headers, config) {
                            console.log(status);
                        });
                };

提前致谢。

1 个答案:

答案 0 :(得分:0)

在范围内声明变量。

$scope.responseList=[];

然后按

中的响应文本

如果响应数据是列表,那么你必须将它连接起来

$scope.responseList=$scope.responseList.concat(data);

如果响应数据是单个对象,则必须将其推送

$scope.responseList.push(data);

示例代码

$http({
  // code
}).then(function(result){
   // data is list then you have to concate it 
   $scope.responseList=$scope.responseList.concat(data);
   // data is single objecth then you have to push it 
   $scope.responseList.push(data);
})

然后在视图中显示responseList