即使在获取响应后,页面仍会保持加载状态

时间:2014-11-25 01:03:09

标签: javascript ajax node.js

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

以下是相关代码:

的test.html:

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

server.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。

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

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

但首先请注意,在网页加载完毕后我绝不应该使用document.write(我认为是你的情况)和it's generally considered to be a bad practise