【问题标题】:Page keeps loading even after response is fetched即使在获取响应后页面仍会继续加载
【发布时间】:2014-11-25 01:03:08
【问题描述】:

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

以下是相关代码:

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。

这可能是什么原因造成的?

【问题讨论】:

    标签: javascript ajax node.js


    【解决方案1】:

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

    但首先请注意,在您的网页完成加载(我猜是您的情况)和it's generally considered to be a bad practise 之后,您永远不应该使用document.write。

    【讨论】:

    • 确实!在写入摆脱无限加载状态后添加document.close()。我只是使用document.write() 来快速测试数据是否正确传输 - 在此过程中遇到了上述问题,所以很好奇。我在实际文件中使用jQuery.html()。谢谢!
    • 太棒了。我已经更新了我的答案,所以它清楚地提到调用document.close() 可以解决问题。
    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多