2016-10-28 7 views
0

AJAXからNode JSサーバーに変数を渡していますが、要求からデータを抽出しようとすると、私は[Object Object]を取得し続けます。どのようにAJAXからNodeにデータを渡すのですか?Nodejsがリクエストから[object Object]を取得しています

AJAX:

$.ajax({ 
      type: "POST", 
      url: "/Watch", 
      data: {"name" : stockName}, 
      contentType: "json", 
      success: function(d) { 
       //Stuff happening 
      }, 
      error: function(d) { 
       console.log("Error"); 
      } 
     }); 

ノードJSサーバー:ノードJSで

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

console.log("DATA from AJAX = " + req.body);//Returns [Object Object] 
console.log("DATA from AJAX = " + req.body.data);//Returns 'undefined' 
console.log("DATA from AJAX = " + req.data);//Returns 'undefined' 
console.log("DATA from AJAX = " + req.name);//Returns 'undefined' 
console.log("DATA from AJAX = " + req.body.data);//Returns 'undefined' 

res.send(""); 
}); 

にconsole.logは私がリクエストからデータを取得しようとしたさまざまなもののいくつかを示しています。

alert(JSON.stringify({"name" : stockName})); 
     $.ajax({ 
      type: "POST", 
      url: "/Watch", 
      data: JSON.stringify({"name" : stockName}), 
      contentType: "application/json", 
      success: function(d) { 
       //Stuff     
      }, 
      error: function(d) { 
       console.log("Error"); 
      } 
     }); 

ノードJS:フォーマットし、要求されたコンテンツタイプに送る

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
var port = process.env.PORT || 5000; 

app.use(bodyParser.json()); 

app.post('/Watch', function(req, res) { 
    console.log("In Watchlist POST"); 

    console.log("DATA from AJAX = " + req.body.name);//This was the solution  

    res.send("Finished Watchlist post"); 
}); 

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

app.listen(port, function() { 
    console.log('App listening on port ' + port); 
}); 
+0

eval('('+ msg + ')');は、あなたが持ってよろしいです 'app.use(bodyParser.json())'またはこのルートハンドラの前に追加似たような? – mscdex

+0

はいファイルの先頭にあります – develop1

+0

次に、あなたの 'data'を明示的に' JSON.stringify() 'し、' application/json 'のように完全な 'contentType'を使う必要があるかもしれません。 – mscdex

答えて

2

res.format({ 
    'text/plain': function(){ 
    res.send('some json string inside quotes'); 
}, 
'text/html': function(){ 
    res.send('sending html response'); 
       }, 
'application/json': function(){ 
    res.json({ 
    success: true, 
    messge: 'what you requested', 
    }); 
}, 
'default': function() { 
    res.status(406).send('Invalid format requested!'); 
} 
}); 

必要に応じてデータを入力することができます。ジャバスクリプトに、ちょうどGET /ポストの上に文字列を評価

$.ajax { 
... 
success: function (msg, statusText) { 
    console.log("Response: " + msg); 
    msg = eval('('+ msg + ')'); 
    $('.result').html(msg.status); 
    console.log(msg); 

}, 
.... 
}); 
1

使用res.formatソリューションは

AJAXた@mscdexの助けを借りて

関連する問題