我有路由器将json数据发送到客户端,如下所示:
router.get('/', function(req, res, next) {
UserModel.selectAllUsers(function(err, vals){
if(err){
console.log(err);
}
res.json({d: vals});
});
});
当我在浏览器中访问路线时,我会打印出有效的json:
{"d":[{"id":1,"name":"arian","sex":"male"},{"id":2,"name":"eni","sex":"female"}]}
但是当我在浏览器开发者工具中检查视图时,我看到:
<html>
<head></head>
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;">{"d": [{"id":1,"name":"arian","sex":"male","race":"caucassian"},{"id":2,"name":"eni","sex":"female","race":"caucassian"}]}</pre>
<body>
</html>
不应该res.json()将内容类型设置为application / json吗?为什么我要用html包装JSON?
答案 0 :(得分:3)
大多数浏览器没有专门针对JSON(或任何其他内容类型)的单独渲染器。要在不正确格式化的情况下呈现JSON,Chrome等浏览器会将其显示为包含在样式化HTML预标记中的文本。如果加载图像文件imgur.com/foo.png
,您会注意到相同的情况 - HTML将只是一个图像标记,其源设置为该URL。
要查看服务器实际传输的内容,您可以打开浏览器的开发人员工具。在Chrome中,您可以按F12,然后转到“网络”标签,其中会列出您的所有请求及其内容。