[AngularJS]不能读取 json 响应中角

发布时间: 2017/4/16 21:36:06
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

js 和 node.js 时遇到一些问题与 json 响应。我有一个执行到一个 REST api,get 操作的 node.js 服务器和 json 结果必须发送到角的客户端,但是当我尝试读取该 json 文件,我得到 [对象]。我找不出我是失踪。谢谢你帮我。 从 REST API 的 Json 文件响应︰

[ { cityPK: { name: 'Lodi', region: 'Lombardia' } },
{ cityPK: { name: 'Frosinone', region: 'Lazio' } },
{ cityPK: { name: 'Roma', region: 'Lazio' } },
{ cityPK: { name: 'Tivoli', region: 'Lazio' } } ]

node.js 文件︰

var http = require('http');
var request = require('request');
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());

app.post('/login',function(req,res){
    console.log("sono nella post "+req.body.username);
    var uid = req.body.username;
    var upwd = req.body.password;
    res.setHeader('Content-Type', 'application/json');
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header("Access-Control-Allow-Credentials", true);



    request({
        url: "http://localhost:8080/RestServiceAdmin/webresources/entities.city",
        method: "GET",
        json: true ,
        headers:[{'content-type': 'application/json'}] 
    }, function (error, response, body){
           if(!error & response.statusCode === 200){
               res.json(body);
           }
    });
});
    app.listen(9080,function(){
    console.log('Server running at http://127.0.0.1:9080/');
});

角的客户端︰

 var app = angular.module('myApp',[]);
        app.controller('myCtrl',function($scope,$http){
            $scope.check = function(data){
                var id = data.form.id;
                var pwd = data.form.password;
                console.log("utente è "+id+",password è "+pwd);
                var msg = {username: id,password: pwd};
                $http({
                    url:'http://localhost:9080/login', //senza niente qui,metti * in app.post()
                    method:"POST",
                    data: $.param(msg),
                    responseType: "application/json",
                    headers: {'Content-Type': 'application/x-www-form-urlencoded',
                              'Accept': 'application/json' 
                              }})
                        .then(function(response){

                            console.log("Server response "+response.data);
                    });
            };
        });

我想,"response.data"应该给我的 json 文件,虽然它返回我 [对象,对象]。什么是我做错了?

解决方法 1:

解决方案

几乎有你 !

只需要改变 + 在向你 log 语句 ,

喜欢这个:

console.log("Server response ", response.data);

原因

+运算符将尝试连接到一个字符串对象,对象不是一个字符串,所以它调用 toString() 函数,显示你 [Object,Object] ,意味着你有一个对象,其中包含的对象。

当你使用逗号时它将检查该对象。

tostring ()文件︰

每个对象都有当对象是表示为一个文本值,或当对象指在预期的字符串的方式自动调用 tostring () 方法。默认情况下,tostring () 方法是对象那里继承的每个对象的后裔。 如果在自定义对象不重写此方法,tostring () 返回"[对象类型]",类型是对象类型的情况。下面的代码说明了这一点︰

赞助商