gpt4 book ai didi

javascript - 在 req.body 中包含表

转载 作者:行者123 更新时间:2023-12-03 12:18:50 24 4
gpt4 key购买 nike

跟进我之前的 2 个问题: get data from async functionadd id to checkbox using loop

我现在尝试使用 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 中

提前感谢您的回答,我希望这是关于这个“项目”的最后一个

最佳答案

您可以将一部分数据隔离在 中,例如在 name=“data[nameField]”中。并仅使用 console.log(req.body.data) 获取这部分内容。

Handlebars 示例:

 <td>
<input type="text" class="form-control" name="data[{{description}}]" value="{{cost}}">
</td>

带有 Handlebars + 助手的示例:

 <td>
<input type="text" class="form-control" name="data[{{removeSpace descrizione}}]" value="{{costo}}">
</td>

//Helpers for removeSpace
removeSpace: function(value){
result = value.replace(/\s/g,'')
return result ;
},

多字段示例:

<tr>
<td name={{descrizione}}>{{descrizione}}</td>
<td>
<input type="text" class="form-control" name="description[{{description}}]" value="{{costo}}">
</td>
<td>
<input type="text" class="form-control" name="quantity[{{quantity}}-q]" value="{{quantita}}">
</td>
<td name={{um}}>{{um}}</td>
</tr>

关于javascript - 在 req.body 中包含表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53462815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com