我试图从expressJs中的api获取数据。我正在使用“请求”。我会通过一个表单发送请求,用户可以在其中选择要查找的电影标题。我不明白为什么 req.body.title 是空的。我也尝试过 req.params.title 但不起作用
谢谢你的帮助
这是 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});
我不知道为什么我无法获得输入值,我尝试了不同的方法但没有奏效。我认为 GET 是正确的,因为我不想修改任何数据。
您正在使用 GET。试试var filmName = req.query.title;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句