【发布时间】:2016-10-10 14:52:58
【问题描述】:
我第一次使用 Node 和 Express 来制作一个简单的网站,对数据库进行 CRUD 操作。当我发出 put 请求时,我无法让页面重定向到“/index”,并且我已经运行了 express 调试器并且没有看到任何异常,页面根本没有改变。有什么想法吗?这是 server.js 中的代码
app.set('view engine', 'ejs')
app.all('/', function(req,res){
var cursor = db.collection('jobs').find().toArray(function(err, results) {
res.render('index.ejs', {jobs: results})
})
})
app.get('/index',function (req, res) {
res.sendFile(__dirname + '/index.html');
})
app.get('/view',function (req, res) {
var cursor = db.collection('jobs').find().toArray(function(err, results) {
res.render('index.ejs', {jobs: results})
})
})
app.post('/jobs', function(req, res) {
db.collection('jobs').save(req.body,function(err, result){
if (err) return console.log(err)
console.log('saved to database');
res.redirect('/view');
})
})
app.put('/view', function(req, res) {
res.redirect(303, '/index');
})
【问题讨论】:
-
您如何发出 PUT 请求?您如何测试“要更改的页面”?
-
我认为问题是带有 PUT 的 http 状态 303。尝试更改为 302 或不使用任何内容。
-
@LucasCosta — 302 是个坏主意,客户端应该使用相同的请求方法。 OP 可能不希望客户端向
/发出 PUT 请求。 (我不明白他们为什么希望客户向/view而不是/view/a-specific-thing制作一个)。 -
@Quentin 我使用 fetch api 在另一个名为 index.ejs 的文件中发出 put 请求。我能够测试 fetch 和 put 工作正常以更新数据库记录现在我只是想测试在 put 请求通过后重新加载当前页面(/view)。我正在通过提交发出 put 请求的按钮后查看页面是否重新加载来进行测试。
-
@user2466886 — 你为什么希望页面重新加载?您正在使用 fetch API。 Ajax 的重点是在不离开页面的情况下从 JavaScript 发出 HTTP 请求。
标签: javascript node.js express