我正在使用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”可能相关吗?
答案 0 :(得分:0)
查看ajax call的async属性。我的猜测是你的同步调用,导致窗口冻结,直到ajax动作完成。
$.ajax({
url: "test.html",
async: true
}).done(function() {
// do stuff
});