2017-11-27 3 views
0

expressJs의 API에서 데이터를 가져 오려고합니다. 나는 '요청'을 사용하고있다. 나는 사용자가 찾을 영화의 제목을 선택할 수있는 양식을 통해 요청을 보내려고했다. req.body.title이 비어있는 이유를 모르겠습니다. 나는 req.params.title와도 시도했지만 이것이 search.ejs이express js, req.body with bodyParser 비어 있거나 정의되지 않음

<div class="container"> 
    <div class="row"> 
    <div class="col-md-4"> 
     <form action="/search" method="GET"> 
      <div class="form-group"> 
       <label for="">Keyword to search</label> 
       <input class="form-control" type="text" placeholder="e.g. Harry Potter" name="lang"> 
      </div> 
      <div class="form-group"> 
        <label for="">Keyword to search</label> 
        <input class="form-control" type="text" placeholder="e.g. Harry Potter" name="title"> 
      </div> 
      <div class="form-group"> 
       <input type="submit" class="btn btn-primary"> 
      </div> 
     </form> 
    </div> 
    <div class="col-md-8"> 
     <p>title</p> 
     <p> <% film.forEach((singleMovie) => { %> 
      <p> <%= singleMovie.title %></p> 
     <% }) %> </p> 
    </div> 
</div> 

파일입니다 도움

에 대한

감사 작동하지 않으며이는 app.js입니다

제목이 입력 텍스트 필드의 값을 변수 filmName으로 전달한 후 사용자가 검색 결과가있는 동일한 페이지로 리디렉션됩니다. 내가 입력 값을 얻을 수없는 이유를 모르겠어요

//APP VARIABLES AND IMPORTING 
var express = require('express'); 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 
var request = require('request'); 
var app = express(); 
app.set('view engine', 'ejs'); 
app.use(express.static('public')); 
app.use(bodyParser.urlencoded({extended: true})); 
mongoose.connect('mongodb://localhost/film_database', {useMongoClient: true}); 
mongoose.Promise = global.Promise; 

//BASIC ROUTE 
app.get('/', (req, res) => { 
    res.render('index'); 
}); 

app.get('/search', (req, res) => { 
    var filmName = req.body.title; => this should return the input text 
    console.log(filmName); 
    var baseAPIAddress = "https://api.themoviedb.org/3" 
    var searchAPI= "/search/movie?api_key={my_api_key}&language=fr&query=" + filmName + "&include_adult=false" 
    var searchRequest = baseAPIAddress + searchAPI; 
    var film = {}; 

    request(searchRequest, (err, resp, body) => { 
     if (!err && res.statusCode == 200) { 
      var film = JSON.parse(body); 
      var titleArray = film['results'] 
      res.redirect('search', {film: titleArray}); 
     } else { 
      console.log('err is: ' + err); 
     } 
    }); 

}); 

//GET => index.js => /search 

///SERVER 
app.listen(3000,() => { 
    console.log('SERVER IS RUNNING AT LOCALHOST://3000'); 
d}); 

페이지의 오른쪽 부분들, 나는 다른 방법을 시도했지만 작동하지 않습니다. 나는 데이터를 수정하고 싶지 않기 때문에 GET이 정확하다고 생각한다.

답변

1

GET을 사용 중입니다. 시도 var filmName = req.query.title;

+0

감사합니다 !!! 지금 일하고있다! :) – aspnet82

+0

당신은 이것을 받아 들인 대답으로 표시해 주시겠습니까? – Himanshu

+0

물론 아프다 나는 tought했다 : p – aspnet82

관련 문제