expressjs 未发送响应

问题描述 投票:0回答:1

我已经这样做了 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)
都不起作用。除了原始请求之外,我在浏览器控制台中什么也没有得到。没有反应。我做错了什么?

javascript node.js express
1个回答
0
投票

更改提交事件解决了问题:

$("#log-form").on("submit", async (e) => {
      e.preventDefault();
© www.soinside.com 2019 - 2024. All rights reserved.