AJAX将过大的数组应用于$ scope变量

时间:2015-04-17 00:44:23

标签: javascript ajax json angularjs

我正在使用AJAX调用获取一组JSON对象。然后我将其应用于Angular中的$ scope变量。到目前为止一切都那么好,但是当结果变得更大(大约17kb或更多)时,它将失败。

它到底是怎么失败的?浏览器中的窗口将冻结。我无法点击任何链接或在我的浏览器(Google Chrome)中的特定标签中滚动。当我查看Chrome开发者控制台中的网络选项卡时,AJAX调用的预览/响应只是白色......没有。但是当我在我的浏览器中复制粘贴请求URL时,我只是获得了我期望得到的数据,它也适用于更大尺寸的数据而没有问题。

注释掉每一行代码我发现以下行会使其崩溃:

$scope.reservaties = data.reservaties;

对周围代码的更广泛看法:

// … stome ajax stuff

if (data.reservaties) {
      console.log(data.reservaties); 
      $scope.$apply(function () {
           $scope.reservaties = data.reservaties; // if put in comment, everything else will work as expected
      });
}

// …

数据对象的简化示例:

{“reservaties”:[{“id”:”1”,”name”:”foo”},{“id”:”1”,”name”:”bar”}]}

不重要但是服务器端运行PHP 5.1.6(我知道它很古老,但我不能更新它,因为它是学校服务器)。

编辑:我刚刚注意到响应式标头中的一小部分差异。失败的那个有一个响应标题:“Transfer-Encoding:chunked”可能相关吗?

1 个答案:

答案 0 :(得分:0)

查看ajax call的async属性。我的猜测是你的同步调用,导致窗口冻结,直到ajax动作完成。

$.ajax({
  url: "test.html",
  async: true
}).done(function() {
 // do stuff
});