我正在尝试将数据从服务器访问到$scope.resp
,但只有原始json会显示在页面上。
这是routes / addr.js
router.get('/', function(req, res) {
var pers = [{add: "abc"},{add: "pqr"}]
res.json(pers)
});
})
aj.js:
var app = angular.module('addbook', [])
app.controller('listcontroller', function($scope, $http){
$http.get('/list').then(function(response) {
$scope.resp = response
})
})
Chrome控制台上没有错误。我注意到当$ http.get请求被注释掉时,它仍然显示原始的json。我看到了一个类似的问题,他们要求做stringify但是它没有用。
答案 0 :(得分:1)
在我们讨论聊天后,我们发现问题出在Express路线上。
Angular是一个客户端框架,它不执行整页重新加载。用户不直接导航到服务于数据的服务器上的URL,他们导航到服务器上不存在的URL,该URL指向index.html文件,Angular可以在该文件中执行一个AJAX请求,用于从服务器URL检索数据并动态重绘页面。
如果您的用户导航到为RAW JSON提供服务的服务器路由,则浏览器将接收JSON并显示它,而不显示任何模板,样式或其他页面元素。因此,您的服务器URL和客户端URL需要不同,并且您的服务器应使用专门标识为API URL的URL。许多人在这些网址前加/api/
以避免混淆或保护这些网址,以便客户无法直接请求这些网址。
答案 1 :(得分:0)
如果你得到一个纯粹的Json尝试像这样转换
$scope.resp = JSON.parse(response.data);