2012-12-19 3 views
5

req.params/req.query/req.body 및 $. post ({..})의 조합에 관계없이 Express의 Jquery 게시 요청에서 JSON 데이터를 추출 할 수 없습니다. .이 내 Node.js를 특급입니다Express에 Jquery 데이터 게시

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

: 나는 또한 다양한 순열을 시도

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

:

이 내 jQuery를입니다 RESS 코드 : 내가 성공하지 않고 데이터 이메일과 이름을 액세스 끝없는 방법을 시도

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

. 솔루션이 req.body/req.params에 대한 간단한 수정이라면 나는 놀랄 것이다. 그러나 어떤 것도 가능하다! 데이터가 없습니다! 모든정의되지 않은과 REQ를 반환

req.body/req.params/req.param.params /는 req.params : - (1337 내가 보는 모든 localhost입니다 그것도 내 URL에 표시되지 않습니다). 쿼리 []을 반환합니다.

req.route 반환 : 내가 추가 해봤

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

:

app.use(express.bodyParser()); 

그러나, 일반적으로 인정 하듯이, 나는 충분히 그 목적을 이해하지 않습니다. 어떤 도움이라도 대단히 감사합니다.

즐거운 성탄절! // 샘

+0

아마도 조금 도움이 될까요? http://stackoverflow.com/questions/5710358/how-to-get-post-query-in-express-node-js –

+0

'bodyParser' 미들웨어는 POST 본체에서'req.body'를 초기화하는 미들웨어이므로 당신은 정말로 그것을 필요로합니다. 경로를 마운트하기 전에 (예 :'app.use (app.router)'또는 첫 번째'app.get' /'app.post' 등의 호출 전에) 반드시 사용하십시오. –

+0

리누스가 말한 바에 따르면, 라우팅하기 전에 bodyParser가 설정되어 있는지 확인하십시오. – leepowell

답변

1

당신은 너무 좋아, 그것을 사용하는 모든 경로 전에 bodyParser() 미들웨어를 추가해야합니다 :

app.use(express.bodyParser()); 

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

방법 명시 작품을 각 요청이 미들웨어 및 경로를 통해 내려온 것이있다 그들이 선언 한 순서대로 경로가 있기 전에 bodyParser() 미들웨어가 선언되었으므로 요청의 본문을 좋은 JSON 형식으로 구문 분석하고 구문 분석 된 값을 req.body에 저장 한 후 다음 경로/미들웨어로 제어를 전달할 수 있습니다. 그렇지 않으면 req.body은 단순히 존재하지 않습니다.

+0

이 답변을 주셔서 감사합니다. –