我已经这样做了 100 次,但我不确定在这种情况下发生了什么...我将登录凭据从我的页面发送到快速服务器:
async function request(url, data) {
data = JSON.stringify(data);
const response = await fetch(url, {
method: "POST",
cache: "no-cache",
headers: {
"Content-Type": "application/json",
},
body: data,
});
console.log('response', JSON.stringify(response));
return response.json();
}
$("#log-form").submit(async () => {
const data = {
username: $('input[name=log-user]').val(),
password: $('input[name=log-pass]').val()
};
const result = await request("/login", data);
console.log("log-result", JSON.stringify(result));
if (result.status == "ok") {
alert("You have successfully logged in!");
} else {
alert(result.error);
}
//window.location.href = "/chat";
});
express 服务器按其应有的方式获取数据,但似乎从未将响应发送回页面:
app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.post('/login', async (req, res) => {
const username = req.body.username;
const password = req.body.password;
const errString = "Incorrect usernane/password combo.";
let result = await query("SELECT * FROM User WHERE name = '"+username+"'");
result = result[0];
if (result.user_id) {
const valid = await bcrypt.compare(password, result["password"]);
console.log('validPass', valid);
if (valid) {
// login and set session
data.status = "ok";
data.data.user = result;
//req.session.user = result;
} else {
// invalid password
data.status = "error";
data.error = errString;
}
} else {
// invalid password
data.status = "error";
data.error = errString;
}
console.log('data', data);
res.status(200).send(data);
});
console.log('data', data);
行打印了它应该打印的内容,但是res.json(data)
和res.send(data)
都不起作用。除了原始请求之外,我在浏览器控制台中什么也没有得到。没有反应。我做错了什么?
更改提交事件解决了问题:
$("#log-form").on("submit", async (e) => {
e.preventDefault();