I'm breaking my head with a Node js with mysql database and trying to make a simple login.
I am getting :Cannot POST /login
<body class="hero-image">
<div id="container">
<div id="tabs">
<p id="lt" class="tabs">Log in</p>
<p id="rt" class="tabs" onclick="location.href = './register';">Register</p>
<div id="clear"></div>
</div>
<div id="cont">
<div id="loginBox" class="comm">
<h3>Sign in</h3>
<form action="login" method="POST">
<input id="username" type="text" autocomplete="off" name="username" placeholder="Username" required>
<input id="password" type="password" autocomplete="off" name="password" placeholder="Password" required>
<input type="submit" value="Submit Form">
</form>
</div>
</div>
</div>
<script>
const form = document.getElementById('login')
form.addEventListener('submit', login)
async function login(event) {
alert('Success')
event.preventDefault()
const username = document.getElementById('username').value
const password = document.getElementById('password').value
const result = await fetch('/api/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username,
password
})
}).then((res) => res.json())
if (result.status === 'ok') {
// everythign went fine
console.log('Got the token: ', result.data)
localStorage.setItem('token', result.data)
alert('Success')
} else {
if (result.status === 'Not Found') {
alert("Incorrect Username and/or Password!");
}
else {
alert("Please enter Username and Password!");
}
}
}
</script>
而這個節點js腳本: var mysql = require('mysql'); var express = require('express'); var session = require('express-session'); var bodyParser = require('body-parser'); var path = require('path') const jwt = require('jsonwebtoken') var connection = mysql.createConnection({ 主機:'localhost',用戶:'root',密碼:'sportacus3',資料庫:'nodelogin'} ); var app = express(); app.use(session({ secret: 'secret', resave: true, saveUninitialized: true })); app.get("/login", (req, res) => { res.sendFile(__dirname "/login.html"); }); app.get("/", (req, res) => { res.sendFile(__dirname "/landing-page.html"); }); app.get("/register", (req, res) => { res.sendFile(__dirname "/register.html"); }); app.use(bodyParser.urlencoded({extended : true})); app.use(bodyParser.json()); app.get('/', function(request, response) { response.sendFile(path.join(__dirname '/login.html')); }); app.post('/api/login', async (req, res) => { var dialog = require('dialog'); const { username, password } = req.body; if (!username) { return res. json({ status: 'Not Found', data: '無效的用戶名/密碼' }); } if (username && password) { connection.query(' SELECT * FROM users WHERE username = ? AND password = ?', [username, password], function(error, results, fields) { if (results.length > 0) { return res.json({ status: 'ok', data: username }); } else { return res.json({ status: 'Not Found', data: 'Incorrect Username and/or Password!' }); } }); } }); app.get('/home', function(request, response) { if (request.session.loggedin) { response.send('Welcome back, ' request.session.username '!'); response.end( ); } else { //response.send('請登錄后查看此頁面!'); alert('請登錄后查看此頁面!'); } }); 應用程式。聽(3000);我真的很感激幫助!
uj5u.com熱心網友回復:
嗯,兄弟!
我試圖努力解讀后端代碼,但現在您發布到“/api/login”,并且您的 html 表單操作針對“登錄”。
要正確呼叫 post 方法,請將您的 html 更改為以下操作:
<form action="/api/login" method="POST">
因此,它與您嘗試執行的正確呼叫相匹配,即:
app.post("/api/login", async(req, res) => {...});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/416456.html
標籤:
