服务器发送原始json,无法通过angular处理

时间:2016-01-04 00:22:35

标签: angularjs json express

我正在尝试将数据从服务器访问到$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但是它没有用。

2 个答案:

答案 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);