2017-11-27 3 views
0

私はexpressJsのAPIからデータを取得しようとしています。私は '要求'を使用しています。私はユーザーが探している映画のタイトルを選択できる形式でリクエストを送信したいと思います。私はなぜreq.body.titleが空であるのか分かりません。私はreq.params.titleでも試みたが、任意の助けexpress js、req.body bodyParserが空または未定義

ため

おかげで動作していない、これはsearch.ejsファイル

<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であります

名前titleの入力テキストフィールドの値を変数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}); 

ページの右側の部分でsが、私はさまざまな方法を試みたが、動作していません。私はデータを変更したくないのでGETが正しいと思います。

答えて

1

あなたはGETを使用しています。 お試しくださいvar filmName = req.query.title;

+0

ありがとうございます!今働いている! :) – aspnet82

+0

これは受け入れられた回答としてマークしてください。 – Himanshu

+0

確かに私はしました: – aspnet82

関連する問題