2014-11-25 42 views
0

所以我试图从我的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()即使提取数据,请求也不会完成,即在提取数据后浏览器进入无限期加载状态。

发送到回调的状态文本显示'success',所以我猜测ajax侧设置没有错误。

我使用jQuery 1.11.1和node.js 0.13.0。

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

回答

0

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

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

+0

确实!在写入之后添加'document.close()'摆脱了不确定的加载状态。我只是使用'document.write()'来快速测试数据是否正确传输 - 并且在这个过程中遇到了上述问题,所以只是好奇而已。我在实际的文件中使用'jQuery.html()'。谢谢! – galactocalypse 2014-11-25 03:06:24

+0

太好了。我更新了我的答案,所以它明确提到调用'document.close()'解决了这个问题。 – lukaszfiszer 2014-11-25 12:46:18

相关问题