2016-12-18 14 views
6

Mam serwer w następujący sposób:Node.js jak odczytać dane json z żądania?

app.post('/', function(req, res, next) { 
    console.log(req); 
    res.json({ message: 'pppppppppppppssssssssssssss ' }); 
}); 

wniosek jest wysyłany z klienta jak:

$.ajax({ 
    type: "POST", 
    url: self.serverURI, 
    data: JSON.stringify({ "a": "128", "b": "7" }), 
    dataType: 'json', 
    success: function (result) { 
     console.log(result); 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     console.log(xhr); 
    } 
}); 

dotychczas grzywny połączenie.

Mój problem jest na serwerze:

console.log(req); 

gdzie chcę odczytać dane wysłałem. Jak mogę odczytać { "a": "128", "b": "7" } z req?

Odpowiedz

4

Mimo że o tym nie wspomniałeś, Twój kod wygląda tak, jakby był napisany dla środowiska Express. Moja odpowiedź jest skierowana na to.

Należy użyć opcji body-parser dla Express. W przypadku, gdy twój projekt zależy od wygenerowanego kodu, najprawdopodobniej jest już zawarty w twoim głównym serwerze. Jeśli nie:

var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); 

Instalacja z KMP: npm install body-parser --save

przeanalizowane JSON jest wówczas możliwy przez req.body:

app.post('/', function(req, res, next) { 
    console.log(req.body); // not a string, but your parsed JSON data 
    console.log(req.body.a); // etc. 
    // ... 
}); 
+0

Dziękuję bardzo, to działało. Wreszcie ufffffff. Byłoby świetnie, gdybyś mógł wyjaśnić, jak mogę wysłać taki JSon do klienta za pomocą parametru "res" :) – arslan

+0

'res.json (object)' to poprawny sposób na przejście. Jak już podano w przykładowym kodzie. – qqilihq

+0

Przeczytałem wiele tutoriali. Niektórzy używają "res.json (object)", niektórzy używają "res.end (coś)", co jest dość mylące dla osób, które są nowe. – arslan

Powiązane problemy