в ответ на мои 2 предыдущих вопроса: получить данные из асинхронной функции и добавить идентификатор в флажок, используя цикл
Я сейчас пытаюсь получить доступ кпроверил флажки, используя nodejs и выразил в таблице, когда я нажимаю кнопку на моей странице результатов, но при попытке войти в req.body я получаю только пустую строку или неопределенную.
Я добавил текстовый ввод, чтобы посмотреть, все ли работает должным образом, и да, я мог записывать его содержимое на страницу результатов, когда нажимал кнопку, поэтому проблема определенно возникает из таблицы и флажков.
Вот мой код:
Сервер :
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const TorrentSearchApi = require('torrent-search-api')
TorrentSearchApi.enableProvider('Yggtorrent','login', 'password')
//TorrentSearchApi.enableProvider('1337x');
app.use(express.static('public'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.set('view engine', 'ejs')
var torrentsG = []; //empty global variable to store the torrents
const search = async query => {
const loweredQuery = query.toLowerCase()
const torrents = await TorrentSearchApi.search(loweredQuery, 'All', 5)
return JSON.stringify(torrents)
}
app.get('/', (_, res) => res.render('index'))
app.post('/', async (req, res) => {
const torrents = await search(req.body.torrent)
torrentsG = JSON.parse(torrents);
//console.log(torrentsG);
res.redirect('/results');
})
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})
app.get('/results',(_ ,res) => res.render('results', {torrents:torrentsG}))
app.post('/results',function (req,res){
console.log(req.body);
})
Клиент
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="/css/table.css">
</head>
<body align="left">
<div class="container">
<form action="/results" method="post">
<input name="torrent" type="text" class="ghost-input" placeholder="Search a Torrent" required>
<table name="tableau" class="table" align="left">
<thead>
<tr>
<th>Download </th>
<th>Title</th>
<th>time </th>
<th>seeds </th>
<th>size </th>
<th>provider </th>
<th>link </th>
</thead>
<tbody name="TBODY">
<% for (var i = 0; i < torrents.length; i++) { %>
<tr>
<td> <input type="checkbox" name="checkbox" id="checkbox" Class="checkbox"> </td>
<td> <%= torrents[i].title%> </td>
<td> <%= torrents[i].time%> </td>
<td> <%= torrents[i].seeds%> </td>
<td> <%= torrents[i].size%> </td>
<td> <%= torrents[i].provider%> </td>
<td> <%= torrents[i].link%> </td>
</tr>
<% }%>
</tbody>
</table>
<input type="submit" class="ghost-button" value="Download selected torrents to seedbox">
</form>
</div>
</body>
</html>
Как вы можете видеть, я пытался дать имена родительским элементам флажков, чтобы они по крайней мере появлялись в req.body () без какого-либо успеха.С другой стороны, "torrent" текстовый ввод правильно записан в req.body
Заранее спасибо за ваши ответы, и я надеюсь, что это будет последним в этом "проекте"