2013-03-12 5 views
0

Express에서 Node.JS 서버로 GET 정보를 전송하는 매우 간단한 양식이 HTML로 작성되었습니다. 이것은 형태 :GET 양식 및 Node.JS 및 Express 관련 문제

<form method="get" action="/search" autocomplete="off" class="navbar-search pull-left"> 
     <input name="search" type="text" id="search" data-provide="typeahead" placeholder="Search..." /> 
    </form> 

그리고 이것은 서버의 일부입니다

app.get('/search', function (req, res){ 

    console.log(req.query["search"]); 

    res.render('search.ejs') 

}); 

내가 입력에 뭔가를 작성하고 키를 눌러 입력하고 페이지가 오랜 동안로드 유지하고, I 예를 들어 http://localhost:8080/search?search=foo에 들어가면 340 오류가 발생합니다. 내가 질문에 POST 요청과 함께 작동하지 않기 때문에 나는 값을 제대로 보내지 못하는 것으로 생각한다. 이것에 대한 해결책은 무엇입니까?

감사의 말씀!

+0

console.log() 문이 실행됩니까? 즉, 서버 로그에서 req.query [ 'search'] 값을 볼 수 있습니까? –

+0

아니요, 콘솔에 아무것도 표시되지 않습니다. – MrMangado

+0

아래에 제공된 답변이 정확하다고 생각합니다. 그러나 내가 이것을 테스트했다면, 내가 할 수있는 첫 번째 일은 나의 요청이 실제적으로 경로에 도달하고 있는지를 확인하는 것이었을 것이다. "console.log ('여기')"와 같은 것입니다. 또한 요청이 올바른 경로에 도달하고 응답이 걸린 경우 로그에 인쇄 된 오류가있을 수 있습니다. 나는 그것들을 검사 할 것이다. –

답변

1

req.query 대신 req.params.search를 사용해야 동작하지 않습니다. 여기

app.get('/search', function (req, res){ 
    var search = req.query.search; 

    console.log(search); 

    res.render('search.ejs') 

}); 

당신이 그것에 대해 자세한 내용을보실 수 있습니다 : http://expressjs.com/api.html#req.param

+0

'params '는 경로의 자리 표시 자에 의해 설정된 매개 변수입니다 ('/ search/: key'는'req.params.key'를 생성합니다). 쿼리 문자열에 전달 된 매개 변수에 액세스하는 올바른 방법은 실제로는 'req.query'를 통해 수행하거나'req.param (...) '을 통해 수행 할 수 있습니다. – robertklep

0

다음 시간을 당신의 변수가 어디에 app.get(... console.log(res, req);에 erorr, 유형을 파악하고 찾을 수 있습니다.