2014-04-29 20 views
18

Tôi đang cố viết một ứng dụng Express đơn giản để nhận JSON trong một yêu cầu Bài đăng. Dưới đây là những gì tôi có cho đến nay trên máy chủ:Phân tích cú pháp các yêu cầu bài đăng JSON trong Node.js bằng Express 4

var express = require('express'); 
var bodyParser = require('body-parser'); 

var app = express(); 
app.use(bodyParser.json()); 

app.post('/acceptContacts', function(req, res) { 
    'use strict'; 
    console.log(req.body); 
    console.log(req.body.hello); 
    res.send(200); 
}); 

app.listen(8080); 

Và đây là những gì tôi có trên máy khách trong trình duyệt:

var req = new XMLHttpRequest(); 
req.open('POST', 'http://localhost:8080/acceptContacts?Content-Type=application/json'); 
var obj = {hello:'world'}; 
req.send(JSON.stringify(obj)) 

Tuy nhiên, tôi nhận được đầu ra sau trên giao diện điều khiển của máy chủ:

{} 
undefined 

Có ai đề xuất nguyên nhân không?

Trả lời

20

Nó sẽ có tác dụng nếu bạn sử dụng setRequestHeader:

var req = new XMLHttpRequest(); 
req.open('POST', 'http://localhost:8080/acceptContacts'); 
req.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 
var obj = {hello:'world'}; 
req.send(JSON.stringify(obj)); 
+0

gì nếu bạn không kiểm soát các khách hàng? Nếu khách hàng không thiết lập tiêu đề này, nhưng tôi biết nó đang đăng một cơ thể JSON, có cách nào tôi có thể truy cập nó không? – daltonclaybrook

+1

Có. Nó sẽ làm việc mà không có 'setRequestHeader' nếu bạn cũng sử dụng' app.use (bodyParser.text()); '. – MikeSmithDev

Các vấn đề liên quan