简体   繁体   中英

Sending data from AngularJs to NodeJs issue

I'm gonna start by showing you my code

Angular Code: app.js

$scope.submit = function(){
$scope.jsonData={
                 "status":"OK",
                 "data":{
                        "nbOperatorPresent": $scope.nbOperatorPresent,
                        "objectif1stHour": $scope.objectif1stHour,
                        "objectif2ndHour": $scope.objectif2ndHour,
                        "objectif3rdHour": $scope.objectif3rdHour,
                        "objectif4thHour": $scope.objectif4thHour,
                        "objectif5thHour": $scope.objectif5thHour,
                        "objectif6thHour": $scope.objectif6thHour,
                        "objectif7thHour": $scope.objectif7thHour,
                        "objectif8thHour": $scope.objectif8thHour
                        }
                }
                $http.post("http://localhost:5000/settings",
JSON.stringify($scope.jsonData)).success(function(data,status){
                        console.log('success')
                    })
}

NodeJs Code: index.js

app.post('/settings',urlencodedParser,function(req,res){
         console.log(req.body)
})

As you can see, I have a button to submit the data inserted by the user and send it to the server.

My problem is, when I hit submit, there is nnothing in my browser console, I mean console.log('Success !') didn't work, that is to say that all the code inner the .success(function(data,status)) won't be executed so I can't notify the user that he has submitted Successfully, I don't know where the problem came from !!

BUT In the other console console.log(req.body) I found all the data that has been passed from Angular .

Can anyone explain this to me ? I've tried other solutions but always the same problem :(

You're not returning anything from the node.js code. You need to add in a returning data like:

app.post('/settings',urlencodedParser,function(req,res) {

    console.log(req.body)    
    res.send("Success") 

})

To expand on the answer...

Please note if you are unfamiliar with node and express you may want to get in the habit of returning

res.send(success: true, data: res).end()

Its very typical on the angular or UI side to be able to parse as response.data object. Just a suggestion.

and change to this:

.success(function(res,status){
       console.log(res.success, res.data)
 })

This is a very common architecture especially when dealing with web services that you have not control over.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM