user8283849
user8283849

Reputation:

How to post JSON object angularjs

I would like post object and read it on node server but I have an error.

controller :

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

    });
};

server node :

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

server node head:

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"));

Screenshot of the error network POST : enter image description here

server error of console.log(req.body);

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

Upvotes: 1

Views: 67

Answers (2)

Vivz
Vivz

Reputation: 6620

You are not passing any parameter in your post API. POST needs a parameter to be passed and since you are passing the parameter in the request URL, you can try by passing an empty object like this:

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

    });

You are trying to concatenate an object in the URL which is not a good approach. If you want to still do this way, stringify it and then append it to URL. And you can get it with the help of req.query. But it is better if you change the url and pass contact as a parameter to your API call.

Problem solved by :

var OBJ = JSON.stringify(yourOBJ);

Upvotes: 1

Jayant Patil
Jayant Patil

Reputation: 1587

For node js there different syntax please see below:

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

});

This will work

Upvotes: 1

Related Questions