如何发布JSON对象angularjs

时间:2017-07-11 08:48:58

标签: angularjs json node.js

我想发布对象并在节点服务器上读取它,但是我有一个错误。

控制器:

$scope.update = function(contact) {
console.log(contact);
    $http.post('/contactlist/' + contact).then(function(response) {
        console.log(response);

    });
};

服务器节点:

app.post('/contactlist/:contact', function (req, res, next) {
    console.log(req.body);
    res.json();
});

服务器节点头:

var express =  require('express');
var app = express();
var mysql      = require('mysql');
var bodyParser = require('body-parser');
var connection = *****************

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({extended:false}));
app.use(express.static(__dirname + "/public"));

错误网络POST的屏幕截图 enter image description here

console.log(req.body)的服务器错误;

[object Object] SyntaxError: Unexpected token o in JSON at position 1

2 个答案:

答案 0 :(得分:1)

您没有在帖子API中传递任何参数。 POST需要传递一个参数,因为你在请求URL中传递参数,你可以尝试传递一个像这样的空对象:

 $http.post('/contactlist/' + contact,{}).then(function(response) {
        console.log(response);

    });

您正在尝试连接URL中的对象,这不是一个好方法。如果您仍想这样做,请将其字符串化,然后将其附加到URL。你可以在req.query的帮助下得到它。但是,如果您更改网址并将联系人作为参数传递给API调用,则会更好。

问题解决了:

var OBJ = JSON.stringify(yourOBJ);

答案 1 :(得分:1)

对于节点js,有不同的语法,请参见下文:

var yourObj = {}; 
$http.post('/contactlist/' + contact, {data: yourObj}).then(function(response) 
{
    console.log(response);

});

这将有效