javascript - 如何将 html 数据从节点 js 发送到前端?
问题描述
我目前正在创建一个应用程序,我使用 MongoDB 存储登录数据,使用 nodejs 创建 API 和前端 JS HTML 来显示页面。我正在创建用户,我通过 fetch ajax POST 调用将电子邮件 ID 和密码传递给后端节点服务器。在 DB 中创建用户的后端 api 路由。我想在创建用户后重定向到不同的页面。我怎样才能做到这一点?她是我的代码片段。
//前端获取调用
async function createUser(email , password) {
return fetch("http://localhost:3000/user",
{
// Adding method type
method: "POST",
// Adding body or contents to send
headers :{
"content-type": "application/json"
},
body: JSON.stringify({
"userId" : email.value,
"password" : password.value
})
});
}
//后端代码
app.post('/user', async (req, res) => {
// res.header("Access-Control-Allow-Origin", "*");
// res.header("Access-Control-Allow-Methods", "POST,OPTIONS");
const {error} = validate(req.body);
if (error) {
return res.status(400).send(error.details[0].message);
}
let user = await User.findOne({userId : req.body.userId});
if(user) return res.status(400).send("User already registered");
let newUser = new User (
{
userId : req.body.userId,
password : req.body.password
}
);
newUser = await newUser.save();
res.redirect('/logged');
//res.send(newUser)
//res.send("<h1>Hi</h1>");
//res.sendFile((path.join(__dirname+'/loggedon.html')));
//res.send("<h1>Hi</h1>");
}
);
app.get('/logged' , function(req, res){
res.send("<h1>Hi</h1>");
// res.setHeader(200 , 'Content-Type' , 'text/html');
// fs.readFile('./loggedon.html', function(err , data){
// res.write("<h1>Hi</h1>");
// })
});
我正在检查仅发送 HI。但这在本地服务器上可以正常工作。但是我将如何将数据发送到前端。请告诉我。注释行是我已经尝试过的东西。
解决方案
res.redirect
发送一个 HTTP 重定向响应,意思是“你从这个 URL 请求了一些数据。你可以从这个 URL 获取它”。
由于您使用 Ajax 发出请求,因此将遵循重定向,请求新的 URL,并将结果传递给 Ajax 处理程序。
你还没有编写处理程序(或者,如果你有,你没有费心将它包含在问题中)所以什么都没有发生。
旁白:重要的是要注意这并不意味着“在主浏览器窗口中加载新 URL”。
新的 URL 只会在请求首先被加载到主浏览器窗口时才会被加载。
你的不是。这是一个 Ajax 请求。
您可以location
让 Ajax 处理程序为 promise 解决时分配一个新值。
坦率地说,如果你想加载一个新页面,我首先会质疑 Ajax 的使用,只是将系统设计为使用常规表单提交,根本不涉及客户端 JS。
推荐阅读
- javascript - 在 forEach 中设置值后映射为空。调试器显示迭代的数组不为空
- python-3.x - 如何使用python检查鼠标是否在字段中?
- python - 如何使用 NLTK Wordnet 获得更多同义词?
- javascript - Openlayers - 根据属性设置矢量图层的样式
- javascript - 如何在 React js 中使用 map 函数获取嵌套循环值?
- android - 构建apk版本中的Flutter Firestore强制关闭(错误)
- zip - 从 ftp url 导入 zip 文件中的文本 CSV 文件会导致绑定错误 (BoundsError)
- c - 复数 - 如果票数相等,如何打印多个获胜者?
- python - sklearn StandardScaler 似乎无法正常工作
- html - 带边框的选项卡菜单