即使在阅读了许多相关问题之后,我也不确定在JS前端收集DOM数据并将其提取POSTs到Express服务器POST URL之后,呈现URL的最佳方法到底是什么。
- 我知道fetch POST并不要求渲染
- 在这一点上,我不是要求一个替代的POST方法(XML / FORM等)。我会问一个单独的问题,如果目前的方法是无效的
- 我很感谢关于如何即时“刷新”URL的回复,然而,这主要是询问如何为下一个浏览器GET请求呈现URL
- 我“假定”理解,我的应用程序只呈现一次在服务器启动的网址,这是问题
在获取POST和MYSQL查询“ttupdate”完成后,我如何调用render函数?
// snippet render code ////////////////////////////////////////////////
function render(file, url, contentdata) {
app.get(url, async(_req, res, next) => {
try {
res.render(file, { data: await contentdata });
} catch (err) {
next(err);
}
});
}
render('time-picker', '/time-picker', timetablesthree)
在下面的代码片段中,你会在哪里以及如何实现它?
// snippet new TIME-PICKER table to DB
app.post("/time-picker-input", async(req, res) => {
for(i=0; i<=167; i++) {
let inputFieldId = req.body[i].fieldid;
let inputFieldValue = req.body[i].fieldvalue;
// console.log(inputFieldId);
await ttupdate(inputFieldValue, inputFieldId, 'timetablesthree');
};
res.json({ message: 'Success' });
});
关于我的设置的其他信息:
let express = require('express')
let bodyParser = require('body-parser')
let app = express()
app.set('view engine', 'ejs')
let path = require('path')
app.set('views', path.join(__dirname, 'views'))
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}))
app.use((err, req, res, next) => {
console.error(err.stack)
res.status(500).send('Sorry - something broke...')
})
app.listen(3000, (req, res) => {
console.log("App is running on port 3000")
})
let { singledbentry, refresh, refreshTwo, ttupdate } = require("./database.js")
let activetime = require('./activetime.js');
let mysql = require('mysql2')
1条答案
按热度按时间uxhixvfz1#
这是一个变量范围的问题。
背景:在FORM操作POST后,许多端点正确渲染,并且使用更新的数据正确渲染。
唯一没有正确渲染的端点,除非在服务器重新启动后,是使用fetch POST。所以我被误导认为明显的原因是fetch POST的不同行为(比如不像浏览器那样请求渲染)。
然而,重新加载后,没有一个端点正确渲染。这是不可见的,因为它们总是通过express POST res.render显示正确的数据。