2016-12-14 10 views
0

ノードエンドを表すためにフロントエンドのangularjsからjsonデータを送信する際に問題があります。ここで私が試したことがあります。anglejsからnodejsへのJSONデータの送信

frontend.htmlページ

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

backend.jsページ

$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ノードサーバーの部分で正確なJSONを取得できません。これは私が得ているものです。

出力

{ '{"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."}': '' } } 

私は、ノードサーバの一部に正確なJSONを取得することができますどのようにいずれかの助け、することができます。私は文章フィールドだけを解析してファイルに書き込むことができます。

答えて

0

$ http POST呼び出しでは、JSONではなくObjectを使用します。JSONをサーバーに送信する前にJSONを文字列化する必要があります。

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

こんにちはしばらく、返信いただきありがとうございます。私は** JSON.stringify($ scope.jsondata)**を試しました。しかし、私はまだ同じ出力を得ています。そして、サーバー側で私は解析することができません。 – naik3

+0

これ以外の方法があるので、JSONを解析して、文章フィールドをanglejs側のファイルに書き込むことができます。 – naik3

0

投稿をノードに送信するJSONとして作成していますか?

Angularはあなたのためにこれを行います。あなたはVedの提案とAngularのようにポストに入れてオブジェクトに入れることができ、これを魔法のようにJSONに変更してノードサーバーに送信します。

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

これは、サーバ上で読まれます:サーバーに送信する前に、JSONにデータ型を設定してみバックオブジェクト

0

にそれを変更するノードでbodyparserのNPMモジュールとして[Object object]。これは、サーバーがJSONとして理解することができますapplication/jsonにContent-Typeヘッダーを設定します

$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) { 

}) 

更新:それは応答場合 私はあなたのソースコードを実行し、少し変更してみましたが、あなたがチェックすることができますあなたが望む正しいフォーマット。チェックアウトこのレポ:https://github.com/nguyennb9/sample-angularjs-expressjs

+0

こんにちは、返信いただきありがとうございます..出力の変更はありません。それでも、このフォーマットになっています: '{'{" status ":" OK "、" language ":" english "、" sentences ":':{{{" sentence ":" That 's nice restaurant。 }、{"文": "私は別の悪いレストランに行った"}、{"文": "私はその映画が好きではなかった"}、{"文": "それは非常に悪い映画だ。 } ':' '}} – naik3

+0

私の回答の更新を確認できますか? – Finn

0

使用ヘッダー内アプリケーション/ JSON POSTメソッド

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

    }); 
関連する問題