2016-12-14 4 views
0

Ich habe ein Problem beim Senden von JSON-Daten vom Front-End-AngularJs zum Ausdrücken von NodeJs. Hier ist was ich versucht habe.Senden von JSON-Daten von angularjs an nodejs

frontend.html Seite

<form ng-submit="func()"> 
    <textarea name="inputtext" type="text" ng-model="sentence"></textarea> 
</form> 

backend.js Seite

$scope.func = function(){ 

$scope.jsondata = {"status":"OK","language":"english","sentences":[{"sentence":"That's a nice restaurant."},{"sentence":"Also I went to another bad restaurant."},{"sentence":"I didn't like that movie."}]} 

$http.post('/sample',$scope.jsondata).success(function(data,status){ 
     console.log("Success"); 
    }) 
} 

server.js

var express = require('express'); 
var app = express(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
var bodyParser = require('body-parser'); 
var path = require('path'); 
var fs = require('fs'); 

app.set('views', __dirname + '/views'); 
app.set('view engine' , 'ejs'); 

app.use(bodyParser.json()); 
var urlencodedParser = bodyParser.urlencoded({ extended: true }); 

app.use(express.static('public')); 

app.get('/',function(req,res){ 
    res.render('index',{ title: 'Sentence' }); 
}); 
app.post('/sample',urlencodedParser,function(req,res){ 
    console.log(req.body); 
}); 
http.listen(8888, function(){ 
    console.log("Server listening on 8888"); 
}); 

I Ich bekomme keine genaue JSON im Knoten Server Teil. Das ist es, was ich bekomme.

Ausgang

{ '{"status":"OK","language":"english","sentences":': { '{"sentence":"That\'s a nice restaurant."},{"sentence":"Also I went to another bad restaurant."},{"sentence":"I didn\'t like that movie."},{"sentence":"Thats a very bad movie."}': '' } } 

Kann jemand helfen, wie kann ich genau json im Knoten Server-Teil bekommen. Damit kann ich nur Satzfelder in eine Datei parsen und schreiben.

Antwort

0

$ http POST Aufruf, nimmt Objekt, nicht json.So müssen Sie Ihre JSON stringieren, bevor Sie es an den Server senden.

$http.post('/sample',JSON.stringify($scope.jsondata)).success(function(data,status){ 
     console.log("Success"); 
    }) 
} 
+0

Hallo, danke für die Antwort. Ich habe versucht, JSON.stringify ($ scope.jsondata) **. Aber ich bekomme immer noch die gleiche Ausgabe. Und auf der Serverseite kann ich nicht parsen. – naik3

+0

Jede andere Methode gibt es, so dass wir die JSON analysieren und Satzfelder in Datei schreiben können, nur auf der angularjs-Seite. – naik3

0

Erstellen Sie den Beitrag als JSON zum Senden an Knoten?

Angular wird dies für Sie tun, können Sie in den Beitrag als Ved schlägt und Objekt und Angular wird dies in eine JSON, um an den Node-Server senden magisch ändern.

$scope.func = function(){ 

$scope.data = {language:"english", sentences: [{sentence:"That's a nice restaurant."},{sentence:"Also I went to another bad restaurant."}, {"sentence":"I didn't like that movie."}]} 

$http.post('/sample',$scope.data).success(function(data,status){ 
    console.log("Success"); 
}) 
} 

Dieses auf dem Server als gelesen wird: [Object object] als das bodyparser npm Modul in Knoten es

0

Versuchen Sie, den Datentyp json zu setzen, bevor an den Server senden zurück zu einem Objekt wird sich ändern. Es wird die Content-Type-Header auf application/json gesetzt, die der Server als json versteht

$http({ 
    method: 'POST', 
    url: baseUrl + '/sample', 
    dataType: "json", 
    data: { 
     "status": "OK", 
     "language": "english", 
     "sentences": [{"sentence": "That's a nice restaurant."}, 
      {"sentence": "Also I went to another bad restaurant."}, 
      {"sentence": "I didn't like that movie."}] 
    } 
}).success(function (data, status) { 

}).error(function (data, status) { 

}) 

Update: Ich habe versucht, den Quellcode und ändern, ein wenig zu laufen, können Sie überprüfen, ob es die Antwort das richtige Format, das du willst. Kasse diese Repo: https://github.com/nguyennb9/sample-angularjs-expressjs

+0

Hallo, danke für die Antwort .. Keine Änderung der Ausgabe. Trotzdem kommt es in diesem Format: '{'{" status ":" OK "," language ":" english "," sentences ":': {'{" sentence ":" Das ist ein nettes Restaurant. " }, {"sentence": "Auch ich ging in ein anderes schlechtes Restaurant."}, {"sentence": "Ich mochte diesen Film nicht."}, {"sentence": "Das ist ein sehr schlechter Film." } ':'}} ' – naik3

+0

können Sie das Update meiner Antwort überprüfen. – Finn

0

Verwenden application/json in Header, während POST-Methode

$http({ 
    method:'POST', 
    dataType: "json", 
    url: 'http://localhost:8000/saveform', 
    data : $scope.user, 
    headers: { 
     'Content-Type': 'application/json' 
    } 
    }).success(function(data){ 

    }); 
Verwandte Themen