即使在获取响应后,页面仍会继续加载

Page keeps loading even after response is fetched

本文关键字:继续 加载 获取 响应      更新时间:2023-09-26

所以我试图通过jQuery.getJSON()从我的节点.js服务器(使用express.js)获取一些数据。

以下是相关代码:

测试.html:

<script>
$.getJSON('/test', function(data, status, xhr){
    document.write(data.message);
    //console.log(data.message);
});
</script>

服务器.js:

app.get('/test', function(req, res){
    res.json({ message: 'Hello World' });
});

现在,当只使用console.log()时,事情可以正常工作,但是当发出document.write()时,即使获取数据,请求也不会完成,即浏览器在获取数据后进入无限期加载状态。

发送到回调的状态文本显示"成功",所以我猜 ajax 端设置没有错误。

我正在使用jQuery 1.11.1和node.js 0.13.0。

可能是什么原因造成的?

document.write()会自动调用document.open(),这基本上会清除您当前的文档(来源:MDN),因此浏览器可能没有足够的时间关闭XHR连接,从而导致"无限期加载状态"。之后拨打document.close()应该可以解决问题。

但首先请注意,在您的网页完成加载后,您永远不应该使用document.write(我想是这种情况),这通常被认为是一种不好的做法。