2012-12-19 25 views
5

Bất kể kết hợp req.params/req.query/req.body và $ .post ({..} tôi sử dụng là gì, tôi không thể trích xuất dữ liệu JSON từ yêu cầu đăng bài Jquery của tôi trong express .Đăng Dữ liệu Jquery để Express

Đây là tôi jQuery:

$.post("/mail", {email : "[email protected]", name : "[email protected]"}); 

tôi cũng đã cố gắng hoán vị khác nhau của:

$.ajax({type: "POST", url: "/mail", dataType :"json", data : 
{email : "[email protected]", name : "[email protected]"}}); 

Đây là Node.js tôi exp ress mã:

app.post("/mail", function(req, res) { 
    console.log(req.body.name); 
    console.log(req.route); 
    console.log("params1: " + req.param.params); 
.... 

Tôi đã thử cách vô tận của truy cập vào email dữ liệu và tên không thành công. Tôi sẽ ngạc nhiên nếu giải pháp là một sửa đổi đơn giản để req.body/req.params nhưng bất cứ điều gì là có thể! Dữ liệu không có ở đó! (Nó không xuất hiện trong url của tôi hoặc là - tất cả tôi thấy là localhost: 1337)

req.body/req.params/req.param.params/req.params tất cả trởkhông xác định và req. truy vấn trả lại[].

req.route lợi nhuận:

{ path: '/mail', 
    method: 'post', 
    callbacks: [ [Function] ], 
    keys: [], 
    regexp: /^\/mail\/?$/i, 
    params: [] } 

Tôi đã thử thêm:

app.use(express.bodyParser()); 

Nhưng, phải thừa nhận là, tôi không hoàn toàn hiểu được mục đích của nó. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

Chúc mừng ngày lễ! // Sam

+0

Có lẽ điều này sẽ giúp bạn một chút? http://stackoverflow.com/questions/5710358/how-to-get-post-query-in-express-node-js –

+0

Phần mềm trung gian 'bodyParser' là phần khởi tạo' req.body' từ phần thân POST, vì vậy bạn thực sự cần điều đó. Hãy chắc chắn rằng bạn sử dụng nó trước khi bạn gắn kết các tuyến đường của bạn (tức là trước khi bạn làm 'app.use (app.router)' hoặc 'app.get' /' app.post' etc đầu tiên của bạn). –

+0

Điều Linus đã nói, hãy đảm bảo trong cấu hình bodyParser của bạn được đặt TRƯỚC KHI định tuyến của bạn. – leepowell

Trả lời

1

Bạn sẽ phải thêm bodyParser() middleware trước khi bất kỳ tuyến đường mà sử dụng nó, như vậy:

app.use(express.bodyParser()); 

app.post('/mail', function(req, res) { 
    console.log(req.body); // the body attribute will be created by the bodyParser() 
}); 

Cách công trình nhanh là mỗi yêu cầu được chảy xuống qua trung gian và các tuyến đường của bạn theo thứ tự mà họ tuyên bố. Vì phần mềm trung gian bodyParser() hiện được khai báo trước tuyến đường của bạn, nó sẽ có cơ hội phân tích cú pháp yêu cầu thành định dạng JSON đẹp, gắn giá trị được phân tích đó vào req.body và sau đó chuyển sang kiểm soát tuyến đường/phần mềm trung gian tiếp theo; nếu không, req.body sẽ không tồn tại.

+0

đẹp, cảm ơn câu trả lời này! –

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