我仍在学习,但有点沮丧,因为我无法使用 ES6 Javascript 找到此问题的解决方案。
我有一个简单的待办事项列表 Web 应用程序,所有内容都通过 html 页面和本地存储提供的 javascript 文件保存和呈现。
我的问题是我希望能够将其部署为具有在线和离线使用的 Node 应用程序。我的想法是能够添加一个任务来渲染客户端并在后台发出 POST 和 DELETE 请求以发送到数据库。
模型正在按照我想要的方式接收和保存,但是我想结束响应 (res),这样页面就不必重新加载并破坏应用程序体验。该代码确实可以使用 res.redirect('back')
工作,但在视觉上并非没有问题,因为它每次都会重新加载。
这是应用程序的 js 文件:
const express = require('express');
const mongoose = require('mongoose');
const passport = require('passport');
const cookieSession = require('cookie-session');
const keys = require('./config/keys');
const authRoutes = require('./routes/auth-routes');
const passportSetup = require('./config/passport-setup');
//App
const app = express();
app.set('view engine','ejs');
//Static Files Route
app.use('/resources',express.static('resources'))
//CookieSession
app.use(cookieSession({
maxAge: 1000*60*60*24,
keys: [keys.session.cookieKey]
}));
//Init passport
app.use(passport.initialize());
app.use(passport.session());
//MongoDB Connect
mongoose.connect(keys.mongodb.dbURI,{ useNewUrlParser: true },()=>{console.log('MongoDB connected');})
//Routes
app.use('/auth',authRoutes);
app.use('/submit',require('./routes/submit'));
//Main
app.get('/', (req,res) =>{
res.render('index',{user: req.user});
});
//Port Listening
app.listen(7000, ()=>{
console.log("Listening on port 7000");
});
这是我正在使用的 POST 逻辑:
const express = require('express');
const router = express.Router();
const Task = require('../models/task-model');
const bodyParser = require('body-parser');
let urlencodedParser = bodyParser.urlencoded({ exstended:false });
router.post('/', urlencodedParser, (req,res,next)=>{
let newTask = Object.assign({owner: req.user._id},req.body);
console.log("POST recieved");
console.log(newTask);
res.redirect('back');
//Task.create(newTask);
});
module.exports = router;
webapp 存储库的离线版本:https://github.com/FalseProspect/myTask-TODO-app/tree/master
TLDR; 是否可以在不使用 ES6(无 JQuery)重定向/渲染同一页面的情况下结束挂起的服务器响应。我希望服务器响应页面时不会发生任何事情。
最佳答案
在您的 post 方法中,使用 res.json()
return res.json({
success: true,
message: "Some success message",
data: "some data if there's any"
});
在您的前端中,检查响应状态或成功值。
关于javascript - Node/Express - POST 提交并带有最终响应,无需页面渲染/重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52657174/