2016-10-28 2 views
0

Ich überlasse Variable von AJAX zu Node JS-Server, aber, beim Versuch, die Daten aus der Anfrage zu extrahieren, bekomme ich [Object Object]. Wie bekomme ich die Daten von AJAX zu Node?Nodejs bekommen [Objekt Objekt] von Anfrage

AJAX:

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

Knoten JS Server:

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

Im Knoten JS die console.log einige der anderen Sache zeigt, dass ich versuchte, die Daten aus der Anforderung zu erhalten.

+0

Sind Sie sicher, dass Sie 'app.use (bodyParser.json())' oder etwas ähnliches gegeben, bevor dieser Route Handler? – mscdex

+0

Ja, ich tue am Anfang der Datei – develop1

+0

Dann müssen Sie möglicherweise explizit 'JSON.stringify()' Ihre 'Daten' und verwenden Sie eine vollständige' contentType' wie 'Anwendung/Json'. – mscdex

Antwort

2

Mit Hilfe von @mscdex die Lösung wurde

AJAX:

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

Knoten 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); 
}); 
1

Verwenden res.format zu formatieren und an den Content-Type senden angefordert ,

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!'); 
} 
}); 

können Sie die Daten beliebig auffüllen. Javascript, eval('('+ msg + ')');

nur die Zeichenfolge auf Get/Post bewerten
$.ajax { 
... 
success: function (msg, statusText) { 
    console.log("Response: " + msg); 
    msg = eval('('+ msg + ')'); 
    $('.result').html(msg.status); 
    console.log(msg); 

}, 
.... 
});